C 日本語文字列 新しいページはコチラ
提供: yonewiki
(→マルチバイト文字列、ワイド文字列) |
(→日本語文字列) |
||
17行: | 17行: | ||
そういった分類は意味を成しませんが、ともかくこれらの文字が出てきたらエスケープシーケンスを打ち切るために'\\'という形にすればよく、<br /> | そういった分類は意味を成しませんが、ともかくこれらの文字が出てきたらエスケープシーケンスを打ち切るために'\\'という形にすればよく、<br /> | ||
十\個,表\示,能\力とかにする手法があります。これは面倒過ぎる。<br /> | 十\個,表\示,能\力とかにする手法があります。これは面倒過ぎる。<br /> | ||
+ | ※勘違いしてはいけないことですが、printf文で出力するときに必要となる手法としてです。<br /> | ||
+ | テキスト文書が能\力といった形で保存しておくということを言っているのではないです。プログラム側だけで対処すべきことです。<br /> | ||
+ | それはメモ帳のようなテキストエディタで「表示」と記述してANSI(実際はShift_JISでCP932)形式で保存しても、バイナリエディタで開いたら95 5C 8E A6と保存されることでも<br /> | ||
+ | 理解できると思います。95 5C 5C 8E A6と保存していたら、あるテキストエディタ「表\示」とそのまま画面に出力され、適当なプログラムの方では「表示」とされることになります。<br /> | ||
<br /> | <br /> | ||
このような問題から、日本語をそのままchar型でマルチバイト文字列として扱うのはよろしくないということがわかります。<br /> | このような問題から、日本語をそのままchar型でマルチバイト文字列として扱うのはよろしくないということがわかります。<br /> | ||
− | ※0x5cをみつけたら、もう一個\ | + | ※0x5cをみつけたら、もう一個\を加える処理とか、マルチバイトの先頭にくる文字コードが来たら2byteで1文字とか計算したりして、昔はPerlとかでCGI組むときでは、このままつかってたこともありました。(汗<br /> |
+ | 今はいろいろ便利な関数が用意されているので、そういったことは自分で対処しなくてよくなりましたね。<br /> | ||
<br /> | <br /> | ||
それで、解決策は?<br /> | それで、解決策は?<br /> | ||
28行: | 33行: | ||
でも一番いいのはこれってのはあります。でも、それはそれで、「そんなことせなあかんの?話が違う、帰るわ!」って思われるかもしれません。<br /> | でも一番いいのはこれってのはあります。でも、それはそれで、「そんなことせなあかんの?話が違う、帰るわ!」って思われるかもしれません。<br /> | ||
<br /> | <br /> | ||
+ | |||
== '''マルチバイト文字列、ワイド文字列''' == | == '''マルチバイト文字列、ワイド文字列''' == | ||
*マルチバイト文字列<br /> | *マルチバイト文字列<br /> |