QT5 Android SJIS 文字化け
SJISのフォントデータで、文字が化けてしまう。
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QFileDialog> #include <QFontDatabase> #include <QMessageBox> #include <QTextCodec> #include <QString> #define TR(s) (QString::fromLocal8Bit(s)) bool MainWindow::canOpenFontFile(QString fileName) { if (fileName.isEmpty()) { return false; } else { QFile file(fileName); if (!file.open(QIODevice::ReadOnly)) { QMessageBox::information( this, TR("Unable to open file:\n"), file.errorString()+"\n"+fileName); return false; } } return true; } bool MainWindow::canAddDb(QFontDatabase database, QString fileName) { if (canOpenFontFile(fileName)) { int result = database.addApplicationFont(fileName); if (result == -1) { QMessageBox::information( this, TR("Unable to install font file:\n"), "fileName="+fileName); return false; } } return true; } MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // QString path = QCoreApplication::applicationDirPath() + "/"; // QString fileName = path +"org.ttf"; QString path = ":/fonts/"; QString fileName = path + "org.ttf"; QFontDatabase database; if(canAddDb(database, fileName)) { QFont f = database.font("myfont","Normal",30); // f.setPointSize(12); f.setFixedPitch(true); f.setPixelSize(12); ui->label01->setFont(f); ui->label02->setFont(f); ui->label03->setFont(f); } QTextCodec::setCodecForLocale(QTextCodec::codecForName("Shift-JIS")); //QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Shift-JIS")); QString str01 = path; QString str02 = "!#$%& 0123456789 abcdefghijklmnopqrstuvwxyz あいうえお 美しいフォント"; QString str03 = "ヤマト、最大180円値上げ=基本運賃、27年ぶり"; QTextCodec *codec = QTextCodec::codecForName("Shift-JIS"); QByteArray ba02 = codec->fromUnicode(str02); QByteArray ba03 = codec->fromUnicode(str03); ui->label01->setText(str01); ui->label02->setText(ba02); ui->label03->setText(ba03); QString str11 = path; ui->label11->setText(str11); ui->label12->setText(TR("!#$%& 0123456789 abcdefghijklmnopqrstuvwxyz あいうえお 美しいフォント")); ui->label13->setText(TR("ヤマト、最大180円値上げ=基本運賃、27年ぶり")); } MainWindow::~MainWindow() { delete ui; }