問題タブ [wchar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
4447 参照

c++ - Linux と Windows の wchar_t の違いと変換

これこのスレッドから、Windows では wchar_t が 16 ビットであり、Linux では wchar_t が 32 ビットであることを理解しています。

私のサーバーは Windows ベースで、クライアントは Linux です。

サーバーには、クライアントからホスト名を取得するための API があります。クライアントが Windows ベースの場合、GetComputerNameW を実行して Wide-String を返すことができます。ただし、クライアントが Linux ベースの場合、事態は複雑になります。

最初の単純なアプローチとして、Windows サーバー側に wchar_t* を返すことを期待して mbstowcs() を使用しました。ただし、この LPWSTR (Linux clinet 側に typedef wchar_t* LPWSTR があります) は、wchar_t が 16 ビットであると想定されるため、Windows では認識できません。

では、Linux で gethostname() の出力を変換する - これは char* で unsigned short (16 ビット) に私の唯一のオプションですか?

前もって感謝します!

0 投票する
2 に答える
946 参照

c++ - UTF-8からANSIwcstombsへの変換が1つの特殊文字で失敗する

wchar_t*をchar*に表示されるように変更したい。WideCharToMultibyteのような変換は行わないでください。

wcstombs関数を見つけて、完全に機能しているように見えましたが、正しく変更されない文字が1つあります。

これは「œ」であり、ANSI番号156ですが、UTF-8では番号339です。原因のASCIIにはそれほど多くの番号がありませんが、なぜ間違った番号になるのでしょうか。

ここに私のソースコードの一部があり、それが機能するようにループとifを追加しました。

このコードは機能していますが、真剣に、これはその問題を解決するための最良の方法ですか?

よろしくお願いします!

0 投票する
0 に答える
524 参照

wchar - Wsutil.exe (ネイティブ Web サービス コンパイラ): xsd:string タイプの WCHAR* と LPCWSTR の比較

WCHAR *ネイティブ Web サービス コンパイラがfor an xsd:stringvs a const wchar_t*(または略して LPCWSTR)を生成する正当な理由はありますか?

この質問をする理由は、私たちのアプリケーションstd::wstringが、WCF サービスに渡す必要があるコード内に s が含まれているネイティブの C++ アプリケーションだからです。ネイティブ Web サービス コンパイラによって生成された C 関数を使用するには、次の行で何かを行う必要があります。

上から見たように、私はポインターを廃止することを余儀なくされていconstます。ここでの私の懸念は、WCHAR*型を明示的に持つことによって、とにかく webservices.lib 自体によって操作されることが期待されるポインターデータですか?

または、文字列の内容を a にコピーすることもできますがWCHAR*、c++ アプリがサービスとして実行され、頻繁な割り当て/割り当て解除に関するヒープの断片化の問題があるためです。

ありがとう、ラグー

0 投票する
2 に答える
165 参照

c++ - ワイド文字出力結果

wchar_t を使用すると、出力結果として数値が得られるのはなぜですか?

0 投票する
2 に答える
506 参照

c++ - Wchar_t から文字列への変換

ファイルパスを確認できるように、 strFileNotifyInfo[1].FileName (Wchar_t) を文字列に変換したいと考えています。しかし、私はそれを機能させることはできません。

これが私のコードです:

0 投票する
2 に答える
3700 参照

c++ - -fshort-wchar を使用することの意味

Mac OS X システムでファイル wchar.h を調べているときに、__cplusplust が定義されておらず、wchar_t の最大サイズが 2 バイトの場合 (コンパイラ オプション -fshort を使用)、wcscpy、wcscat などの str 関数に相当する wchar_t が汚染されていることがわかりました。 -wchar)。

C プログラムでは、-fshort-wchar が定義されていると、そのような関数を使用できないようです。-fshort-wchar が使用されているときに wchar_t 関数を使用することの意味は何ですか?

なぜ -fshort-wchar を使用する必要があるのか​​疑問に思われるかもしれません。wchar_t のサイズが 2 バイトである Windows 用に最初に作成されたアプリケーションを移植しているためです。また、wchar_t 文字列に保持されているデータはファイルに書き込まれ、2 つのアプリケーション間で交換されます。

異なるプラットフォームでの wchar_t の変動性を処理する良い方法は何ですか? Windows での前提は、wchar_t が 16 ビットであることです。

0 投票する
1 に答える
1345 参照

c++ - 文字をワイド文字に変換する

関数を使用して、マルチバイト文字のシーケンスを対応するワイド文字のシーケンスに変換しようとしていmbstowcs_sます。しかし、私は次のヒープ破損の問題を抱え続けています。誰かがそれを修正する方法を教えてもらえますか?

ここに画像の説明を入力してください

これがサンプルコードです。デバッグするとき、それは常にdelete wc_name問題を引き起こしている行です。私はそれがそうであるべきではないことを知っています。

0 投票する
1 に答える
489 参照

c - wprintf が Unicode 合字を 2 つの異なる書記素に分離するのはなぜですか?

コード:

出力:

ae & ASCII テキスト ae

printf は正しい UTF-8 出力を生成しますが、次のようになります。

æ & ASCII テキスト ae

これはここでテストできます。