問題タブ [mbcs]

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 投票する
0 に答える
97 参照

winapi - EDIT コントロールはどのような状況で MBCS を UNICODE として扱いますか?

MBCS を使用して大規模なレガシ アプリケーション ビルドを維持しています。

システム ロケールが日本語で UI ロケールが英語の Windows 7 システムで、編集コントロールの選択位置が正しく返されないという問題があります。日本語でインストールされた XP と Windows 7 でテストしましたが、結果は同じでした。

[codesnippet]

文字列の末尾にある Carat を使用すると、次の出力が生成されます。

文字列「未定義」選択 [3,3]、ユニコード? 間違い

一体何が起こっているのでしょうか?私は小さなテストアプリケーションを構築しましたが、それは期待通りに動作し、出力を生成します

文字列「未定義」選択 [6,6]、ユニコード? 間違い

これは としてビルドされた MBCSsizeof(TCHAR) == 1であり、レガシー アプリケーションであるため UNICODE に切り替えることはできません。

0 投票する
3 に答える
1811 参照

c++ - UNICODE アプリケーションから MBCS ファイルを書き込むにはどうすればよいですか?

私の質問は人々を混乱させたようです。ここに具体的なものがあります:

私たちのコードは次のことを行います。

MBCS ビルド ターゲットの下で、上記はコード ページ 932 の適切にエンコードされたファイルを生成します (これが実行されたとき、932 がシステムの既定のコード ページであったと仮定します)。

UNICODE ビルド ターゲットでは、上記は ???? でいっぱいのガベージ ファイルを生成します。

ソース コードを変更せずに、ビルド ターゲットが UNICODE の場合に上記を引き続き機能させるために、シンボルを定義するか、コンパイラ スイッチを使用するか、特別なヘッダーを含めるか、特定のライブラリへのリンクを使用したいと考えています。

以前の質問は次のとおりです。

FILE*ストリームは t (変換) または b (inary) モードで開くことができます。デスクトップ アプリケーションは、UNICODE または MBCS (Windows の場合) 用にコンパイルできます。

アプリケーションが MBCS 用にコンパイルされている場合、MBCS 文字列を「wt」ストリームに書き込むと、システム コード ページ (つまり、「非 Unicode ソフトウェア用」のコード ページ) の MBCS テキストを含む整形式のテキスト ファイルが生成されます。

私たちのソフトウェアは通常、ほとんどの文字列関数とストリーム関数の _t バージョンを使用するため、MBCS ビルドでは、出力は主に puts(pszMBString)または類似のものputcなど によって処理されpszMBStringます。逐語的に書き出されます(ただし、行末記号は自動的にマッサージされputsますgets )。

ただし、アプリケーションが UNICODE 用にコンパイルされている場合、MBCS 文字列を "wt" ストリームに書き込むと、ガベージ (大量の "?????" 文字) が発生します (つまり、UNICODE をシステムのデフォルト コード ページに変換してから書き込みます)。たとえば、 fwrite(pszNarrow, 1, length, stream)) を使用して、それをストリームに送信します。


ストリームをバイナリ モードで開くことができます。その場合、正しい MBCS テキストを取得できます...ただし、行末記号は PC スタイルの CR+LF ではなく、UNIX スタイルの LF のみになります。これは、バイナリ (非変換) モードでは、ファイル ストリームが LF->CR+LF 変換を処理しないためです。


しかし、私が本当に必要としているのは、MBCS 用にコンパイルするときに作成できたのとまったく同じファイルを作成できることです。システムのコード ページを使用して、行末記号と MBCS テキスト ファイルを修正します。

明らかに、ライン ターミネータを自分で手動で調整し、バイナリ ストリームを使用できます。ただし、これは非常に侵襲的なアプローチです。システム全体でテキスト ファイルを書き込むすべてのコードを見つけて、このすべてが正しく行われるように変更する必要があるからです。驚いたことに、UNICODE ターゲットは、私たちが使用していた MBCS ターゲットよりも馬鹿げている/能力が低いということです! 確かに、C ライブラリを切り替えて、「MBCS ビルドで行うのとまったく同じように、狭い文字列をそのまま出力しますが、行末記号を適切に処理する」と言う方法がありますか?!

0 投票する
3 に答える
47742 参照

c++ - MBCS Visual Studio での MFC C++ プロジェクトのビルド エラー

Visual Studio を使用して既存の MFC プロジェクトを開き、ビルドすると次のエラー メッセージが表示されます。

これは何についてですか?

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

c++ - CStringW を CStringA に変換できません

私は、日本語のようなマルチバイト文字列に変換CStringWするという 1 つの問題に固執している 1 つのプロジェクトに取り組んでいます。CStringA

メソッドを使用して文字列リソースから文字列をロードしていますLoadString()。次のコードを試しましたが、うまくいかないようです。

私も試してみ wcstombs()ました。

CStringWに変換する方法を誰か教えてもらえますCStringか? 前もって感謝します。

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

c++ - レジストリ値 32 ビットを読み取りますか?

MBCS 用にコンパイルする次のコードがあります。

  • コードを 32 ビット コンピュータでも動作させるにはどうすればよいですか?
  • 戻り値を単純な文字列に入れるにはどうすればよいですか? 元; 文字列 namevalue = GetRegistry(_T("名前"));
0 投票する
5 に答える
3654 参照

python - Windows 8.1でDjangoを使用したmanage.py runserverのエラー

この終了コードはどこにも見つかりませんでしたが、うまくいけば、あなたの 1 人が私を助けてくれるか、これが python/Django のバグであるかどうかを教えてくれます。

とにかく、まずここにスタックトレースがあります:

奇妙なファイルパスは無視してください。C:\ に直接配置しようとしました。

コンパイル機能を使用する場合の UnicodeEncodeErrorという、おそらく同様の別の Stackoverflow Question がありますが、使用するファイルパスが英語以外の文字を使用しているようではありません。そこでいくつかの解決策を試しましたが、うまくいきませんでした。

以前に2.7.xでテストされたpython 3.4.1の実行も機能しませんでした。Linux (Ubuntu) で問題なく動作します。

django プロジェクトは空の startproject プロジェクトであるため、特別なことは何もありません。