問題はJavaScriptで日本語表示されたファイル名やフォルダ名を取得したときに、
新規test.doc という名称が
%u65B0%u898ftest.do
という文字列になって、SSLBridge内で扱われるために、日本語のファイルやフォルダを扱えないということ。
%u65B0は、UCS2の「新」で、%u898fはUCS2の「規」に該当する。
ということで、PHPで上記の表記をUTF-8に直す関数をアドホックながら作成してみた。
function ucs2_to_utf8($str){
$utf8str=array();
for ($i=0,$n=0;$i
$i=$i+2;
$ucs2char=pack("H4",substr($str,$i,4));
$i=$i+3;
$utf8char = iconv("UCS-2BE","UTF-8", $ucs2char);
} else {
$utf8char = $str[$i];
}
$utf8str[$n]=$utf8char;
$n++;
}
return join("",$utf8str);
}
本来のUCS2は、ASCII文字も2バイトなので、SSLBridge内で扱われているUCS-2の表記はなんか変だけど、JavaScript経由で渡されるのでしかたない。
この関数を使って、必要な箇所にコード変換をいれてやると、だいたい動きそう。
0 件のコメント:
コメントを投稿