こんにちは。きんくまです。
小ネタです。忘れないうちにメモです。
とあるExcelで書かれた仕様書に、「このコードを使って下さいな」という指示がありました。
なので、Excel(mac版です)からコピーして、エディタに貼付けました。
ところが、何故か文字列の連結がうまくいかないのです。
private static const SAMPLE_URL:String = "http://www.example.com/item"; //このURLをコピーした
public function getConfiguredURL():String
{
return SAMPLE_URL + "?num=5";
}
getConfiguredURL();とやると予定では、以下の文字列にしたかったのですが、
"http://www.example.com/item?num=5"
引数なしになって返ってきます。
"http://www.example.com/item"
いろいろやったあげく、Excelからコピペした最後の部分に終端文字が入っていたことに気がつきました。
終端文字(ヌル文字)っていうのは、C言語の文字列に使う「\0」っていうやつで、文字列はここまでですよっていう印です。
URLエンコードすると、%00です。サーバーのセキュリティにでてくるヌルバイト攻撃に使われるやつです。
なので、さっきのは正確に書くと
private var SAMPLE_URL:String = "http://www.example.com/item\0";
ていう感じに入っていたので、いくら文字列を連携しようとしても、そこで文字列が終わりと見なされてしまい、その次がつながらなかったというわけでした。
なので、いったんコピーした最後の部分を消して、もう一度自分で打ち直したところ、うまくいくようになりました。
ヌル文字を消すときは、一回バックスペースキーをおしてるのに、カーソルが左に動かずそのままでした。ヌル文字消すのはこんな感じなんでしょうかね。
で、FlashBuilderだと見分けがつかなかったのですが、Xcodeにコピーしたところ、
という感じに、?を逆さまにしたやつが見えました。これがヌル文字なんでしょうか、、。
こっちの場合は、消すときにカーソルがちゃんと移動して見えました。
以上メモでしたー。