• ベストアンサー

文字化け

0x81AF U+FF0D # FULLWIDTH HYPHEN-MINUS [2000] unicodeからSJISに変換するプログラムを作っていますが、 上記のコードのみ、SJISでは表示されず、その原因がわかりません。 unicode「-」 SJIS「・」←と、なってしまう。 他の変換(全文字やったわけではありませんが)はうまくいっており、また、SJIS→unicodeへの変換をすれば元通り「-」の表示になります。考えられる原因はどんなものでしょうか? 環境 ・VC++6.0 ・Windows VISTA

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

幾つかの文字は、MSの変換表が腐ってるので、自前で特殊処理が必要です。 >他の変換(全文字やったわけではありませんが)はうまくいっており 全角英数や記号など、漢字以外の部分は、是非、全文字試すのをお勧めします。「-」以外にも何文字か誤って変換されてしまう文字がありますから。 実は、漢字部分も、旧字体と新字体がひっくり返ってたりして、自前で特殊処理が必要な文字も数文字あったりもするんだけど、全部調べる気力は無いです(私はメドイから「これはフォントが入れ替わってるんだ。フォントファイルが悪い」と思い込む事にした)

hardtechno
質問者

お礼

お二方ともありがとうございます。 非常にためになりました!

その他の回答 (1)

回答No.1

http://ja.wikipedia.org/wiki/Unicode#WAVE_DASH_-_FULLWIDTH_TILDE.E5.95.8F.E9.A1.8C その他の文字でも問題は起こりうるらしい #とりあえず俺は理解してません

関連するQ&A