質問

だから私は、スレッドがUTF8にコードページを設定するSetThreadLocaleを使用したいです。今まで、私はこれを行うには、「CT2A(szBUF、CP_UTF8)」などのATL文字列変換マクロの2番目のパラメータを使用してきました。しかし、私はSetThreadLocale()で最初に一度スレッドのコードページを設定できるようにしたいと、再び変換マクロの2番目のパラメータを使用する必要はありません。

私はこれをどのように行うのですか? SetThreadLocaleはCP_UTF8、ちょうどLCIDのようなコードページパラメータになりません。これを達成するためにどのようなパラメータ私が摂食されなければならないSetThreadLocale ??

に注意してください、私は心の中で何も特定の言語を持っていません。私が手の文字列は韓国語、英語などがこれまでのところ、私は、変換マクロの2番目のパラメータとしてCP_UTF8を指定する文字列のこのミックスで問題のないよ、日本人である可能性があります。あなたは「じゃあ、なぜちょうど二番目のパラメータを使用して保持しない」尋ねることができます。 「それは簡単にコードに取り組んでチームメンバーが忘れすることができるからである。それだけで変換マクロのデフォルトパラメータ1のバージョンを使用して正しく動作するかどうそれはいいだろう。」回答、

役に立ちましたか?

解決

SetThreadLocaleは言語識別子を期待しますが、UTF-8は、言語識別子ではありません - それはUnicodeエンコーディングです。土地のIDの目的の一つは、128〜255でANSIテキストを扱う方法をシステムに伝えることです。そのような文字を扱うときに、実際の言語を考えると、そのコードページが使用されます。 UTF-8は、大藤、Unicodeテキストの圧縮された表現です。 UTF-8テキストを作成するために、あなたの入力は、Unicodeである必要があります。 ANSIテキストを考えると、あなただけの文字の上部の範囲を変換する方法を知ることができません。 「手動」で行わとき、これはUTF-8にANSIを変換するために、あなたが最初に指定されたコードページでMultiByteToWideCharのを使用する必要があり、だけにしてあなたはUTF-8に結果のUnicode文字列を変換することができ、方法です。

さて、戻ってあなたの質問に - 私は別の道を行くだろう。追加のコードページのparamバグ場合それほど、それを隠すか、そうだろうなマクロを作る(またはCT2Aクラスを継承してい秒のparam固定)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top