「Qtの基礎 - 文字列」の版間の差分

239行目: 239行目:
  // 該当するパターンを全て削除
  // 該当するパターンを全て削除
  description.remove(tableTagPattern);
  description.remove(tableTagPattern);
</syntaxhighlight>
<br>
<syntaxhighlight lang="c++">
QString strUTF16 = "Sample";
// LinuxまたはMacOSにおいて、UTF-8を使用している場合
std::string strUTF8 = strUTF16.toUtf8().constData();
// toStdStringメソッドは変換される文字列がUTF-8でエンコードされていることを前提としている
// QStringが別のエンコーディング (例: UTF-16) を使用している場合、正しく変換されない可能性があるため注意
std::string strUTF8 = strUTF16.toStdString();
// Windowsにおいて、UTF-8を使用している場合
std::string strCurrentLocale = strUTF16.toLocal8Bit().constData();
</syntaxhighlight>
<br>
<syntaxhighlight lang="c++">
QString    strData  = "文字列";
QByteArray byaryData = strData.toUtf8();
// または
#include <QTextCodec>
QString strData = "文字列";
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QByteArray byaryData = codec->fromUnicode(strData);
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
271行目: 244行目:
  QByteArray byaryData = file.readAll();
  QByteArray byaryData = file.readAll();
  QString    strData  = QString::fromUtf8(byaryData);
  QString    strData  = QString::fromUtf8(byaryData);
</syntaxhighlight>
<br>
<syntaxhighlight lang="c++">
#include <QTextCodec>
// Shift-JISでエンコードされた文字列
QString SJISText = QStringLiteral("こんにちは");  // Shift-JISでエンコードされた文字列
// Shift-JISのコーデックを取得
QTextCodec *codec = QTextCodec::codecForName("Shift-JIS");
// Shift-JISのQByteArrayに変換
QByteArray shiftJISBytes = codec->fromUnicode(SJISText);
// UTF-8の文字列に変換
QString utf8String = QString::fromUtf8(shiftJISBytes);
// または
QString utf8String = codec->toUnicode(shiftJISBytes);;
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>