追試プログラムを書いて実験したところ、以下のことがわかりました。
ただし、この8160をphpのmb_convert_encodingでsjis→UTF8の変換をしてtwitter.comに送ると、帰ってきたときには 上がって下がる「~」ではなく下がって上がる「〜」になります。なので、サーバ側はsjisではなくsjis-winを指定してやれば良さそうです。
ちなみに、サーバから送られてくる文字列に関しては、SO903iの場合は\uff5eでも\u301cでもどちらでも同じ文字として表示されるため、sjisに変換しない限りはそのまま扱って問題なさそうです。
参考
- SO903i で、「から」を変換して入力される「~」はJavaの内部では\uff5e。
- SO903i で、記号から選択して入力される「~」はJavaの内部では\u301c。
- SO903i上では、上の二つの文字はまったく同じグリフで表示される。
- SO903iのJavaでデフォルトエンコーディングでgetBytes()した場合、\uff5e は 3f(?)に、\u301cは8160(~)に変換される。
- WindowsのDoJaエミュレータでは、\u301cは~で表示されるが、\uff5eは?になる。getBytes()の結果はSO903iと同じ。
ただし、この8160をphpのmb_convert_encodingでsjis→UTF8の変換をしてtwitter.comに送ると、帰ってきたときには 上がって下がる「~」ではなく下がって上がる「〜」になります。なので、サーバ側はsjisではなくsjis-winを指定してやれば良さそうです。
ちなみに、サーバから送られてくる文字列に関しては、SO903iの場合は\uff5eでも\u301cでもどちらでも同じ文字として表示されるため、sjisに変換しない限りはそのまま扱って問題なさそうです。
参考
カテゴリ
Javaトラックバック(0)
このブログ記事を参照しているブログ一覧: 文字化けの続き
このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/1178
この問題、N904iのJava実装ではまた違う挙動を示すようです。
追試したいですが暇がない・・・。