追試プログラムを書いて実験したところ、以下のことがわかりました。
ただし、この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に変換しない限りはそのまま扱って問題なさそうです。
参考