Qtをメインに、プログラムやITに関する情報を発信

Qtの戯言

文字コード

Qtで文字コードを変換する

更新日:

QStringはUTF-16

この記事 でも書きましたが、Qtでは文字コードをUTF-16で扱っています。
ファイル入出力などで、Shift-JISやEUCを使用する場合の変換方法について。

 

UTF-16から変換

UTF-16 → 現在のロケール(WindowsであればShift-JIS)

std::string Test::utf16_to_locale(const QString &src)
{
    return src.toLocal8Bit().toStdString();
}

 

UTF-16 → UTF-8

std::string Test::utf16_to_utf8(const QString &src)
{
    return src.toUtf8().toStdString();
}

 

UTF-16 → Shift-JIS

std::string Test::utf16_to_sjis(const QString &src)
{
    QTextCodec *codec = QTextCodec::codecForName("Shift-JIS");
    QByteArray encoded = codec->fromUnicode(src);
    return encoded.toStdString();
}

 

UTF-16 → EUC-JP

std::string Test::utf16_to_euc(const QString &src)
{
    QTextCodec *codec = QTextCodec::codecForName("EUC-JP");
    QByteArray encoded = codec->fromUnicode(src);
    return encoded.toStdString();
}

 

UTF-16に変換

現在のロケール → UTF-16

UTF-8 → UTF-16

この記事 を参照。

 

Shift-JIS → UTF-16

QString Test::sjis_to_utf16(const std::string &src)
{
    QTextCodec *codec = QTextCodec::codecForName("Shift-JIS");
    return codec->toUnicode(src.c_str());
}

 

EUC-JP → UTF-16

QString Test::euc_to_utf16(const std::string &src)
{
    QTextCodec *codec = QTextCodec::codecForName("EUC-JP");
    return codec->toUnicode(src.c_str());
}

 

-文字コード
-, ,

Copyright© Qtの戯言 , 2020 All Rights Reserved Powered by STINGER.