以前書いた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型をやめるか。