全角バックスラッシュ
Shift_JISから、EUC-JPを経由して、Shift_JISへ戻した場合に、
\(円マーク)が、全角バックスラッシュで戻ってくる現象に遭遇する。
こういうものは、charの配列に落として、だな、一文字づつチェックして、
全角バックスラッシュを、\に戻せばいいんだろ!
、と、javaで、char一文字づつ見ていってU+FF3C(全角バックスラッシュ)を
U+005C(\)に変換するような、ソースを書いてみる、と、困ることが判明
// だいたいこんな感じ。 private static String encode(String str) throws java.io.UnsupportedEncodingException { char[] c_buf = str.getCharArray(); for(int i=0;i<c_buf.length; i++){ if(c_buf[i] == '\uff3c') c_buf[i] = '\u005c'; // コンパイルエラーになる } return new String(c_buf); }
と、書いてみて、コンパイルエラーになる。参った。
よくよく、調べていくうちに、javaは、'\u005c'と\は区別がつかないらしい。
\は\でエスケープするので結局
// だいたいこんな感じ。 private static String encode(String str) throws java.io.UnsupportedEncodingException { char[] c_buf = str.getCharArray(); for(int i=0;i<c_buf.length; i++){ if(c_buf[i] == '\uff3c') c_buf[i] = '\u005c\u005c'; // \\と同じ } return new String(c_buf); }
と、することで、コンパイルを通すことはできた、が、思ったような処理に
ならない。というか、\が見えない。
うぅぅん。。どういうことだ?