- ベストアンサー
このような文字コードはありますか
アドレスの入力に使われているのを見た文字コードなのですが、「%26%2312521%3b」で全角カタカナの「ラ」を表すような文字コードはありますか。 ご存知の方は教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> %26%2312521%3b の%26、%23、%3bは、それぞれ&、#、;をURLエンコードしたものなのでこれを元に戻すと、 > ラ これはHTML中にかかれた場合は数値実体参照となり「ラ」と表示されます。 12521(16進表現では30E9)はUnicodeでのコード番号です。 http://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_3000-3FFF http://ideas.paunix.org/utfrefcon.htm ここで入力に「ラ」を入れると、出力は「ラ」になるのが確認できます。
その他の回答 (1)
- Werner
- ベストアンサー率53% (395/735)
> 1バイト文字と2バイト文字を振り分けるには、どうすればいいのでしょう。 Unicode(UTF-16)で考えると、すべて1文字2バイト以上になるので 1バイト文字はないということになってしまいますが、 他の文字コードで1バイトになることが多いASCII文字を振り分けるとするなら、 以下のようにコード番号が127以下の文字を1バイト文字とすればよいでしょう。 if (c<128) {conv=conv+escape(c);} else {conv=conv+unicode(c);} 半角カナの文字コードはかなり後の方にありますが、 これも1バイト文字と定義するならその範囲も含めてください。
お礼
なるほど、ありがとうございます。 入力はUnicodeではないので大丈夫です。 半角カナについては無視できる状況です。
お礼
なるほど、とてもご丁寧にありがとうございます。
補足
余談ですが、文字列sを一文字ずつ読み込んだときに、 conv=""; for(i=0 ; i < s.length ; i++) { c=s.charCodeAt(i); if (c==1バイト文字) {conv=conv+escape(c);} else if (c==2バイト文字) {conv=conv+unicode(c);} } (unicode()はこちらで用意した関数)を実行したいのですが、1バイト文字と2バイト文字を振り分けるには、どうすればいいのでしょう。