文字セットが「未設定」のMFCアプリケーションがあります。マルチバイト文字セットのコードページがあるOSでこのアプリケーションを実行することに関連するリスクは何ですか?
2 に答える
「Character Set: Not Set」オプションでは、_MBCS
も も定義されていません_UNICODE
。これは、*A 一連の関数を使用していることを意味します。が定義されていない場合でも、これらはMBCS 文字列を返します。_MBCS
_MBCS
*A 関数から返される文字列に影響しない場合、それは何をしますか? またはバリアントではなく、一部の<tchar.h>
tcs*
関数をそのmbs*
バージョンにマップします。たとえば、なしでは、ではなく、にマップされます。str*
wcs*
_MBCS
_tcsrev
strrev
_mbsrev
そのため、OS から受け取ったマルチバイト文字列を元に戻したり、編集したりできない場合があります。
リスクは次のとおりです。
1) 英語以外のテキストを使用し、ユーザーがロシア語などを入力した場合、MBCS にマップされていない、または Charset レイヤーを必要とする一部のロシア語文字は、'?' として取得されます。
2) お客様にアプリであることを知らせる必要があります。は英語のみを受け入れ、アプリが英語以外の文字を入力したときに、英語以外のテキストを正しく受け入れまたは取得することを保証するものではありません。
3) 外国語の文字を含むテキストは、アクセントや分音符号が望ましくない、または望ましくない別のものに変換される可能性があります。