• ベストアンサー

UNICODEからASCII

すごく漠然とした質問でもうしわけないのですが UNICODEからASCIIへと変換するようなやり方 または 関数って C++であるのでしょうか 初心者なもので よろしくおねがいします。

  • ayato
  • お礼率25% (16/64)

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

  • ベストアンサー
  • nakashi
  • ベストアンサー率51% (21/41)
回答No.2

VCなら MultiByteToWideChar [MSDN ライブラリ 2001 年 4 月] + [MSDN ライブラリ 2001 年 4 月] + [Visual Studio 6.0 ドキュメント] + [Visual C++ ドキュメント] + [リファレンス] + [Microsoft Foundation Classe リファレンス] + [Microsoft Foundation Class ライブラリ] + [MFC テクニカル ノート] + [テクニカル ノート 59: MFC の MBCS/Unicode 変換マクロの使用] BSTR sConvertFile = L"abc.txt"; USES_CONVERSION; char* sAscConvertFile = W2A(sConvertFile);

ayato
質問者

お礼

解決しました ありがとうございました

その他の回答 (1)

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

ASCIIは7ビットのコードで128通りの文字(制御コード等を含む)を表します。 (8ビットに拡張したコードはいくつかありますが、本来のASCII 一方、UNICODEは16ビットのコードで、65536通りの文字を表す能力があります。 (実際にどれだけ使われていたかは知りません。) ところが、この中で、最初の128文字に限って言えば、配列はASCIIと全く同じ です。従って、16ビットから7ビットにキャストするだけでいいはずです。 char ascii_char; short unicode_char; if (unicode_char<128) ascii_char = (char)unicode_char; こんな答えを求めている質問なのか、「自信なし」ですが。

ayato
質問者

お礼

ご回答ありがとうございました。

関連するQ&A

  • ユニコード変換

    javaでユニコード変換ができるクラスがあるのでしょうか? native2asciiのような変換をjavaからしたいのです。

  • PHPにおいて16進数のアスキー文字とユニコード

    文字列の明確な違いがわかりません。 たとえば16進数のアスキー文字であれば print "\x41"; とした場合  A という文字が出力されます。 また print 0x41; とした場合はアスキー文字ではなく 65という10進数における数値が出力されますね。 さらには print "\xe6\x96\x87\xe5\xad\x97\xe5\x88\x97"; と記述すると 文字列 という文字が出力されます。 ではそうではなくユニコード文字列というのはなんなのでしょうか? 一般てきに \u0000 という形式で表記される物ですが、コレがいまいちわかりません。 これは16進数のアスキー文字によるマルチバイト文字の再現と何がことなるのでしょうか? たとえば、JSONなんかを単純に出力してみるとこのユニコード文字列という形式で表現されますよね? このユニコード文字列の実態?を知りたいです。 よろしく御願いします。

    • ベストアンサー
    • PHP
  • 【SQLServer】UNICODEから文字への変換について

    SQLServer2005を利用しています。 半角→全角変換の関数を作成するために、一度unicode関数を使用したいと考えています。 が、UNICODEから文字への変換方法がわからず困っています。 文字からunicodeへは、UNICODE関数があるのですが、逆はないのでしょうか? 一方通行にしか変換できないのでしょうか? ご存知の方よろしくおねがいします。

  • CIDコードからUNICODEへの変換???

    .NETのC++でプログラムを作っています 外部から文字列が渡されますが、この文字列はCIDコードです これをUNICODEに変換して使用したいのですが、その方法が分かりません 『 CID UNICODE 変換 』をキーワードにして検索しましたが適当な資料に出会えません C++から呼べる変換関数などをご存知でしたらご指導お願い申し上げます 宜しくお願い致します

  • UNICODEなPerl

    なんかいつもしょうもない質問ばっかで申し訳ないのですが、UNICODEで書いたソースコードを実行してくれるPerlってないですか? できればWINで。 文字列をUNICODEに変換できるモジュールとかじゃなくて、たとえばリテラル文字列のなかにユニコード依存なハートマークとか入れられたり、glob関数がファイルリストをUNICODEで受け取れたりと。

  • ASCIIはもう過去?

     いまどきのパソコンの文字入力はIMEですが、これはユニコードかシフトJISしか 使われていないのでしょうか?ASCIIはもうパソコンでは使われなくなったのでしょうか?

  • UnicodeでないファイルをUnicode保存

    いつも楽しく勉強させていただいております。環境はWin7Office2010です。 ExcelVBAからFSOを用いてCSV形式のファイルを読み込み、多少の加工をして最終的にはSQLServerに取り込むという作業をしています。 問題はCSVファイルのことなのですが、どうやらUnicodeでないようでFSOで開くと文字化けしてしまうものがあります。 Excelやワードパッドで開くとちゃんと読めます。 StrConv関数でUnicodeに変換しようとしたのになぜかできませんでした。 今回はファイル数が少なかったので、手作業でワードパッドで開き、保存の形式をUnicodeにして事なきを得ましたが、今後同様のファイルを多数処理しないといけないので手作業での変換は難しいです。 そこで、こんなことは可能でしょうか。 ・ExcelVBAで非Unicode形式のファイルを読み、Unicodeで別ファイルに書き出す。 または、 ・ExcelVBAでワードパッドなどを制御し、自動的にファイルを開いてUnicodeで保存しなおす。 ついでといっては何ですが、そのファイルの文字コードが何であるかはどうやって分かりますか。 できればVBAを介して調べる方法があれば教えてくださるとうれしいです。

  • 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補助の&#x00C0;文字(A`)の UnicodeとSift-JISコードのマップ対応が原因のようです。 具体的には、&#x00C0;は、 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関数 と同じ動きをするように関連付けるか、別途プログラム を作る方法がわからず困っています。 わかる方いらしたら、ご教授下さい。 よろしくお願い致します。

  • エスケープされたunicodeのデコード

    "\u063A\u0629" 上記のようなエスケープされたUnicodeの文字列を C言語でデコードしなければならないのですが、 何か利用できる関数や、変換ルールなどはないでしょうか? Javascriptなどでは簡単に出来るようなのですが、 C言語の説明は見つけられませんでした。 上記文字列はJSON形式で得られたものなのですが、 どうしてもC言語でデコードする必要があり、困っております。 ちなみにOSはLinuxで、iconvなどはインストール済みです。 エスケープされているせいか、そのままでは変換できないようです…。 ご存知の方がいらっしゃいましたら、是非ご教授お願いいたします。

専門家に質問してみよう