2019/04/12(金)01:28
DPX-U730BTのUSB再生不良 続続報
全回からの続き。。。
Jul 9, 2016 DPX-U730BTのUSB再生不良
Jul 14, 2016 DPX-U730BTのUSB再生不良 続報
この前は、「ソ」「スポ」がフォルダーにあるとだめってことで、アルファベットに変更してみたけど、だめで。。。。
で、色々考えてみた。。。
と、一つ気がついたのは、Sift-JISのダメ文字問題。。。
スポって二文字が気になるが。。。
ソってのは、いわゆる有名なSift-JISのダメ文字ですね。。。
「\」フォルダやファイル名の区切り文字と同じ0x5Cが12バイト目にある。。。
げ!それって、むちゃくちゃ、ひっかかる文字たくさんあるんじゃないのか??
で、調べてみると
Shift_JISのダメ文字
Shift_JIS(cp932) の文字コードで、2byte目が0x5c のエスケープ文字 \ になっているものの俗称(だめ文字、駄目文字)
エスケープ文字は使用するフォントやロケールにより¥記号またはバックスラッシュで表示されます。
ダメ文字を含む文字列やパス、ファイル名を処理する場合には文字化け、検索不可など様々な不具合が起きることがあります。
ダメ文字には ー ソ 十 表 など、使用頻度の高いものもあるので cp932を扱う場合には注意が必要です。
また広義には2byte目が 0x7c のパイプ文字 | になっている文字や、2byte目が正規表現などのメタ文字と重なる文字も含む場合もあります。
ダメ文字問題は正規表現をはじめとする様々な言語、システムで制御用のメタ文字として扱われる文字と同じバイト列が、SJISの漢字の2byte目に含まれていることにより起こります。
特に 0x5c や 0x7c は様々なシステムで制御文字として扱われるので、文字化けや検索出来ないなどの問題が起こりやすくなります。
具体例
たとえば cygwin/GNU grepでは「表現」のように cp932のダメ文字 "表" を含む文字列を、固定文字列(fgrep)では検索できますが、正規表現ではgrepできません。
「表現」というダメ文字を含む日本語を検索しているつもりなのに、grep側からは正規表現で検索しているとみなされてしまうためです。
「表現」の cp932でのバイト列は、 95 5c 8c bb です。
0x5c の¥記号は正規表現ではエスケープ文字なので 0x8c をエスケープして、 95 8c bb というバイト列を探す事になりますが、これは当然見つかりません。
ダメ字一覧
で、この中で一番やばいのが下の二つ
2byte目が0x5c \ のダメ文字
2byte目が0x7c | のダメ文字
ということで、この情報をサービスに伝えると
前回の報告から、確認した内容は、全角カタカナの「ソ」「ポ」(スポ2文字ではなく、ポがだめ)カタカナは、それ以外は大丈夫。アルファベットは大丈夫。全角-がだめ
とのこと。。。
なるほど。。。
他が大丈夫ということで、やはり0x5cと0x7cがだめなよう。
なので、色々検索して、変更しました。。。アニソンとか、ステレオポニーとか、十七歳の地図とか。。。
で、また再度挑戦。。。
前回よりも長く。。。なんで、前にひっかかってたところは、超えた模様ですが
だめでした。。。
一晩徹夜で、FLAC作ってたので、また試してみよう。。。