中国語の文字を表示するために、既存の非 Unicode の C プロジェクトを適応させる必要があります。締め切りが短く、私は C とエンコーディングが初めてなので、GUI アプリケーションでの中国語テキストの表示をサポートするために、システム ロケールを簡体字中国語 PRC に変更するというルートをたどりました。これにより、プロジェクトのエンコーディング (Visual Studio 2010) が簡体字中国語 (GB2312) に変更されました。
特殊文字 (例: 度記号、上付き文字 2 など) が疑問符として表示されることを除いて、すべてが機能します。これは、アスキー テーブルで \260、つまり度記号の 8 進数値を渡していたためだと思いますが、これはもはや gb2312 テーブルでは何にも等しくなりません。
キーパッドに度記号を表示するワークフローは次のとおりです。
display_function( データ, '\260' ); //度記号の 8 進数値をキーパッドに渡す
この display_function は、キーパッドに表示するために整数入力を文字列に変換するために使用されます。
data->[ pos ] = (char) ch;
基本的に、これ (およびその他の特殊文字) を正しく表示する必要があります。現在のセットアップを使用してこのシンボルを渡す方法はありますか?
gb23212 の char リストによると、シンボルはサポートされているため、現在の考えでは、シンボルの 8 進数値を計算し、既存の関数をそのまま維持することです。これらは現在、値を文字として渡します。以下の表を使用します。
http://ash.jp/code/cn/gb2312tbl.htm .
および次の式で 8 進数値を取得します。
行に関連付けられた 8 進数に 10 を掛けて、列に関連付けられた 8 進数に加算します。
私はこれがあると信じていますA1E0 x 10 + 3 = 414403.
ただし、これを display_function に渡そうとすると、「エラー C2022: '268' : 文字に対して大きすぎます」というメッセージが表示されます。
私はこれについて間違っていますか?既存の関数は広く使用されているため、変更したくないのですが、ワイド文字を使用するように関数を変更する必要がありますか?
上記が複雑で、誤った仮定で満たされている場合は、お詫び申し上げます。私はこれを 1 週間か 2 週間理解しようとしてきましたが、エンコーディング、文字セット、およびロケールがますます混乱しているようです!
前もって感謝します