■
以前書いたDeleteString(),ReplaceString()にはバグというか、仕様があります(えっ
気づいている人も多いと思いますが、
文字には、1バイト文字とマルチバイト(2byte)文字があります。
1バイトは半角英数字(a,A,0,_とか)
2バイトは全角文字(あ、亜、□ とか)
文字は数値で表されます。
Aなら0x41
aなら0x61
1なら0x31
のようになります。
そして全角は
"あ"なら0x82A0
"い"なら0x82A2
"う"なら0x82A4
となります。
全角文字は0x80以上の値+0x**で表現されます
もうお分かりでしょうか?
下位バイトの数値は半角、全角でも使われるのです。
今回、自分が遭遇したものは、'_'を特定の文字にしたり、削除した時に起きました。
ReplaceString( buf, "_", "<>" );
こんな感じで置き換えようとしたのです。
もちろん上手くいきました。
ただ・・・
'_' = 0x5F
"ダ" = 0x835F
なんと、"ダ"にも0x5Fが含まれていたのです!
よって、これも検索対象になり、変換され、文字化けしましたorz
全角文字かどうか判断が必要ですね。
あとは、char型をやめるか。