- ベストアンサー
ユニコード文字の変換について
文字列が書かれたテキストファイルを読み込み、ユニコード部分だけを変換して画面に表示するプログラムを作りたいと思っています。 つまり、 \u305d\u306eaiueo と書かれたテキストファイルがあれば そのaiueo(←『\u305d』は『そ』、『\u306e』は『の』なので) と表示するプログラムを作りたいのですが、fgetsで読み込みprintfで表示するだけではそのまま「\u305d\u306eaiueo」となってしまい困っています。 \を文字(\\)として読み込んでるからだろうとは思うのですが… また、 char a[]="\u305d\u306eaiueo"; と定義した文字列を printf("%s",a); とすると「そのaiueo」と表示されますが、何故こちらは表示されて、前述の方法では表示されないのかも理解できていません。 どのような考え方、方法であれば解決するのでしょうか?
お礼
諸事情で返答が遅れてしまいました、申し訳ありません。 strtoul()なんていう変換関数があったんですね、今回初めて知りました。 wchar_t wc=strtoul(p,&p,0); だと、「305d」の「d」が変換不可能な文字とみなされてしまったので、基数の0を16として wchar_t wc=strtoul(p,&p,16); setlocale(LC_ALL, ""); printf("%wc",wc); とした所、ちゃんと「そ」と画面に表示することができました。 お陰様で引っかかっていたものがスッキリしました。ありがとうございます!