day02 QTは、中国語の文字と文字化け問題を学びます

文字セット

ASCII文字は、最初は失われる最初ではない場合、パリティとして使用されている7つの128文字、標準のASCII最上位ビット(B7)の合計を設定します。

ISO-8859-1 128-255保存されたラテン文字と拡張ASCII、ので、基本的に欧米諸国は、文字セットを使用することができました。

ANSI米国規格協会

これは、間のマルチバイト文字セット(MBCS、マルチByteChactacterセット)、0〜127個の文字を定義依然として文字バイトの代表である、2バイトの文字を表します。

 

マルチバイト文字セットをコーディングGB2312 GBKの確立に基づいています

GB2312、GBKまだANSIコード、127は、2つの漢字を表現するよりも大きい、GB2312 6763は、一般的に使用される漢字を表すことができます。GBKエンコーディングは延長GB2312中国語の文字で、21003個の文字を表現することができます。

 

UTFエンコーディングは、可変長符号化、シングルバイトASCIIコードとが同一です。記号nバイト(N> 1)の場合、最初のバイトの最初のnビットが1、N + 1が0であり、最初の2つのバイトは、後ろに10です。

UTF-8バイトの長さ1-4

2または4バイトのUTF-16長さ

UTF-32 4バイト長

QT プログラミング、QStringのは、UTF-16の内部メモリを使用しました。デフォルトのエンコーディングは、中国のGB2312 / GBKの下にあります。

 

BOMのエンディアン

LE、小端部、下部に格納された下位アドレス。

下位アドレスに格納されている高、大端部BE。

BOMヘッダのバイトオーダーマーク、テキストヘッダ

FE FF、すなわち、大端BE意味します

FF FEはLE、即ち、小端部を表します  

 

QStringの

Unicode4.0格納されている文字列USHORT 16-bitQCharsを使用して内部のQString。あなたはQTインターフェイス文字列内の非動作を使用する場合は、エンコーディング変換を注意してください。

文字列のカプセル化処理をQStringの。

空の裁判官== "" のisNullのisEmpty

文字列の連結+ =

%1%2引数の書式文字列()

たとえば、/ * *フォーマット/

    QStringのSSR;

    SSR = QStringの( "名前=%1%2%3%4%5")

            .arg( "暁明")

            .arg(15)

            .arg(14.5)

            .arg(123,0,2)

            .arg(255,8,16)。

    qDebug()<< SSR。

 

一方、検索と置換QStingは、正規表現をサポートしています。

 

 

QT中国の文字化け質問

 

デフォルトの文字セット、またはコードは、データソースと一致しません。

QT文字セット:

コーデック= QTextCodec :: codecForName(「UTF-8」);

QTextCodec :: setCodecForLocale(コーデック);

QTextCodec :: availableCodecs();

コードセットを設定した後にのみQStringの:: fromlocal8bitとtolocal8bitに影響を与えます

次のように:

    するchar * SRC = "メタデータの中国のGBK"。

    // GBKまたはGB2312メタデータはマルチバイトQStringの中に保存されています

    //デフォルトのローカルエンコーディングGBK

    QStringのSTR1 = QStringの:: fromLocal8Bit(SRC);

    qDebug()<< STR1。

 

    // QStringのGBKを変換し、出力

    。COUT << str1.toLocal8Bit()toStdString()<< ENDL。

 

    //ローカル符号化形式、原稿をセット

    QTextCodec :: setCodecForLocale(QTextCodec :: codecForName( "UTF-8"));

    QStringのSTR2 = QStringの:: fromLocal8Bit(str1.toUtf8())。

    //同等のQStringのSTR2 = QStringの:: fromLocal8Bit(str1.toStdString()c_str())。

 

    QStringの下で//ウィンドウの引数として使用します

    メッセージボックス(0、str2.toStdWString()c_str()、L "中国のタイトルQ"、0);

 

 

ソース・ファイル・フォーマットの文字セット(VSとqtCreator異なる設定)。

 

QtCreator符号化文字集合:ツール - >オプション - >テキストエディタ - >行動

 

VSは、UTFエンコーディングでファイルとして保存、または追加することができます

コードステートメント符号化フォーマットとの#pragma execution_character_set( "UTF-8")。

この点は、ファイルのエンコーディングを持っている場合はUTFあり、再度の#pragma構文よりも多くの場合、これは再び文字化けが発生することに注意してください。

あなたは今無用VSプロジェクトのプロパティで設定した文字を、設定した場合。

 

文字セットの変換マクロ機能QStringLiteral、マルチバイトUTFに変換されます。

おすすめ

転載: www.cnblogs.com/merlinzjl/p/11391860.html