• ベストアンサー

unicode←→JISコード

Borland C++ Builder5で、メール関係のプログラムを書いていますが、VBAが返すunicodeをjisに変換したいのです。それ用のAPIがあるらしいのですが、APIリファレンスが手元にないわ、買うにも高すぎるわで、困っています。 APIを直接聞いちゃうのはルール違反かもしれませんので、違う質問をします。 BorlandについてくるHELPでWideCharToMultiByteというのがあります。これが解決に近いですか? というか、ワイドキャラクタとマルチバイトって、どう違うんでしょうか?

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

  • ベストアンサー
回答No.1

Unicodeからshift_jisであればWideCharToMultiByteでできるでしょう。が、JISへの変換は無理ではないかと。いったんshift_jisに変換し、さらにJISへ、というのが簡単かも。shift_jis->JIS変換ならWebのあちこちで公開されていますから。

KAZUMI2003
質問者

お礼

ありがとうございます。やはり、この関数がそうだったのですね。SiftJISとJISの変換は、昔っから良く使ってたので大丈夫です。

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>ワイドキャラクタとマルチバイトって、どう違うんでしょうか? ・ワイド文字 1つの文字をあらわすのに複数バイトを使用する ・マルチバイト文字 1つの文字をあらわすのに1バイト以上を使用する です。 具体的にはワイド文字は1文字を必ず2バイトで表すUnicode、マルチバイト半角は1バイト、全角は2バイトの S-JISのようなものです。

KAZUMI2003
質問者

お礼

私の持っている環境では、HELPが英語なので、しかもunicodeって、どこにも書いてないので、ちょっと不安でした。教えていただき、ありがとうございました。

関連するQ&A

  • HTMLユニコード(数値文字参照)の復元

    10進HTMLユニコードを基のunicodeに変換したいのですが、どなたか、ご存知ないでしょうか。 こちらの環境はWindowxXp Borland C++ Builder6です。 今、「【」から12301を16進化して3010とし、これに無理やり、「\u」と「3010」を結合させてみたのですが、出力表示はu3010と失敗でした。 うまく行けば、「【」となるはずでしたが・・・・・・。 Web検索したところ、APIなどの変換のための関数が見つからないで自作したいと思っています。 宜しくお願いします。

  • VBScript ASC関数:文字エンコード(Unicode→Shif

    VBScript ASC関数:文字エンコード(Unicode→Shift-JIS)多対一変換について 初めての質問です。 よろしくお願いいたします。 【質問】 VBScriptのASC関数で文字をShift-JISコード 表示した場合、多対一変換され、文字変換が起こります。 この多対一変換をしないように、もし対応する文字が無い場合は、 ?になるようにしたいと思いますが、良い方法は無いでしょうか? 【現象】 ラテン1補助のÀ文字(A`)の UnicodeとSift-JISコードのマップ対応が原因のようです。 具体的には、Àは、 Unicodeでは(A`)だが、Sift-JISコードでは(A) にマップされているのです。 IMEパッドの文字コードをみるとわかります。 以下のサイトを見ると、さらに詳しく載っています。 ▼参考サイト 第7回 Unicodeからの多対一の変換[前編] http://gihyo.jp/admin/serial/01/charcode/0007 そこで、APIのwidechartomultibyte関数の wc_no_best_fit_charsを設定したエンコード方式 を使用すれば解決するというところまでは、 わかってきたのですが、これをVBScriptのASC関数 と同じ動きをするように関連付けるか、別途プログラム を作る方法がわからず困っています。 わかる方いらしたら、ご教授下さい。 よろしくお願い致します。

  • visual studio2010 文字コード

    visual studio2010を使っています。Cのプログラムを書いてます。 文字セットを選ぶ箇所で ・マルチバイト文字セットを使用する ・Unicode文字セットを使用する という2つの選択肢がありますが、 上を選ぶとshift-jisの文字コードが選ばれると認識してます。 それで、下のUnicode文字セットを使用するを選んだ場合なんですが、 これはutf-16のことですか? utf-8が主流だと思っていたのでここでさすUnicodeが勝手に utf-8のことだと思ってたんですが、 visual studioで扱っている方はワイド文字で、 utf-8について調べたらASCIIにも対応できる可変長のマルチバイト という風に書いてあったので、あれ?と思い色々調べたら ウィンドウズではメモ帳などでUnicodeという表記でutf-16を指すみたいなので これも同じでutf-16なのかなと思いました。 ただ、visual studioで扱うUnicodeはワイド文字ということと、 utf-16は2バイト固定ではなく2バイト単位なだけで 4バイトで1文字を表すこともあることが書いてあったので、 これはワイド文字とは違う??と混乱してます。 それともワイド文字は2バイト固定と思ってたんですが wchar_tが2バイトずつなだけでワイド文字は1文字2バイトというわけではない ということでしょうか? それとwchar_tで2個分で1文字を表したりする使い方はするんでしょうか? まとまりのない質問になってしまいましたがよろしくおねがいします。

  • JavaのStringクラスに「外字」という概念はある?

     今、客先のデータをJavaで処理しようとしているのですが、そのデータ(Shift-JISの文字列データ)には、今まで使われてきた「外字」が含まれています。  私の知っている範囲では、Shift-JISの文字列でも、Javaで読み込んだら内部的にUnicodeに変換されるのではないかと思っているのですが(←間違っているかもしれません)、そのUnicode変換の際に外字の部分はどうなってしまうのでしょうか。また、Unicodeに変換された文字列を、出力の際にまたShift-JISに戻すことになると思うのですが、そのときにはちゃんと以前の外字コードに戻ってくれることが保証されているのでしょうか。  JavaのリファレンスでStringクラスのページで「外字」という文字列で検索してみたのですが、まったくひっかからなかったので不安になっています。  よろしくお願い致します。

    • ベストアンサー
    • Java
  • Unicodeのテキストファイルを読みたい

    Unicode(UTF-8)で作成されたテキストファイルを読み、Shift-JISに変換しメモコントロールに表示したいと思っています。 以下のコードで実行したのですが、文字化けになり正常に表示できません。 開発環境はC++Builder2010です。 char sjis[300]; wchar_t buf[300]; size_t n; setlocale(LC_ALL,"japanese"); while(fgetws(buf,300,fp31) != NULL){ n = wcstombs(sjis,buf,300); Memo1->Lines->Add(sjis); } fgetws関数が問題なのか、wcstombs関数が問題なのか、不明なのです。 アドバイスよろしくお願いいたします。 ちなみに読込んだテキストファイルは、国税局のインボイス登録者データです。 https://www.invoice-kohyo.nta.go.jp/download/index.html

  • JIS UNICODEに関して

    Wordで質問があります。 文字をJIS規格にしてWordを作成したのですが、たくさんあるフォントでJIS規格がどれかわかりません。 そこで疑問なんですが端的に、Wordであるたくさんのフォントで、 JIS規格のフォントはどれでしょうか? また、どのフォントがJISなのかUNICODEなのかは、覚えるしかないんでしょうかね?見わけがつくものなんでしょうか?

  • JIS2004とUnicode

    JIS2004の面区点位置(1-15-94など)からUnicodeでのコードを調べる方法がありましたら教えてください。 http://www.unicode.org/で私はUnicodeから面区点位置を調べることしかできませんでした。 ※Unicodeに限らずシフトJISやEUCなどでもかまいません。

  • ユニコード(UTF-8)からJISコードへの変換

    Turbolinux 10用Netscapeブックマークの日本語内容を読み取ることができません。 ユニコードのコード表等の情報をご存知の方.いらっしゃったらばお知らせください。 現在.開発環境がVisual Studio 6.0(Win95, 98)ですが.MS-Basic(PC-9801+MS-DOS6.2, 5.5A, 3.3D)も生きています。両者に共通な読み取り方法として.バイナリ入出力を予定しています。 マイクロソフト系専用入出力ルーチンは使用の予定がありません。

  • シフトJISとUnicodeについて

    「ひん」(濱のさんずいの代わりに月へん) という文字を表示させようとしたところ WindowsXPでは文字検索していくと表示され、Windows98等では表示されないという現象が起こりました。 よく調べてみると、両OSともUnicode表には同じコード「81CF」に この「ひん」という漢字は存在するのですが、 XPは表示されて98は表示されません。 どうすれば98でも表示できますか? また「ひん」という文字にシフトJISコードとかは登録できないのでしょうか?

  • unicodeをシフトJISにしたい

    <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> とHTMLに入れているのですが、アップロードするとunicodeになっています。 どうするとシフトJISに戻せるのでしょうか? 使用している転送ソフトはFFFTPです。 どうぞ宜しくお願い致します。

専門家に質問してみよう