追試プログラムを書いて実験したところ、以下のことがわかりました。
  • SO903i で、「から」を変換して入力される「~」はJavaの内部では\uff5e。
  • SO903i で、記号から選択して入力される「~」はJavaの内部では\u301c。
  • SO903i上では、上の二つの文字はまったく同じグリフで表示される。
  • SO903iのJavaでデフォルトエンコーディングでgetBytes()した場合、\uff5e は 3f(?)に、\u301cは8160(~)に変換される。
  • WindowsのDoJaエミュレータでは、\u301cは~で表示されるが、\uff5eは?になる。getBytes()の結果はSO903iと同じ。
と、言うわけで、iアプリ側の対応としては、サーバに送信する前に、\uff5eを\u301cに変換してあげれば良さそうです。
ただし、この8160をphpのmb_convert_encodingでsjis→UTF8の変換をしてtwitter.comに送ると、帰ってきたときには 上がって下がる「~」ではなく下がって上がる「〜」になります。なので、サーバ側はsjisではなくsjis-winを指定してやれば良さそうです。
ちなみに、サーバから送られてくる文字列に関しては、SO903iの場合は\uff5eでも\u301cでもどちらでも同じ文字として表示されるため、sjisに変換しない限りはそのまま扱って問題なさそうです。

参考

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: 文字化けの続き

このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/1178

コメント(1)

false :

この問題、N904iのJava実装ではまた違う挙動を示すようです。
追試したいですが暇がない・・・。

コメントする

このブログ記事について

このページは、falseが2007年5月24日 13:17に書いたブログ記事です。

ひとつ前のブログ記事は「文字が化ける」です。

次のブログ記事は「xorg7.2祭り」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

広告

Powered by Movable Type 6.1.1