質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

Q&A

2回答

5636閲覧

PyQt5で日本語のカタカナ・ひらがなが文字化け

Yokko-san

総合スコア13

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

1グッド

1クリップ

投稿2016/03/25 03:37

編集2022/01/12 10:55

###PyQt5のダイアログの日本語(ひらがな・カタカナのみ)が文字化け
LinuxMint17.3 xfceでpython3.4.3,PyQt5.5.1でGUIプログラミングの勉強をしています.
QLabelやQMessageBoxの日本語文字列のうち,ひらがな・カタカナのみが,
たまに(50%くらいの確率)で文字化けします.

この原因を知りたいのと対策を行いたいと思いますので,教えていただけたらと思います.
よろしくお願いします.

文字化けした時しなかった時

###ソースコード

python3

1#!/usr/bin/python3 2import sys 3from PyQt5.QtWidgets import (QMainWindow, QLabel, QApplication, QPushButton, 4 QHBoxLayout, QVBoxLayout, QWidget) 5from PyQt5.QtGui import QIcon 6 7def main(): 8 app = QApplication(sys.argv) 9 main_windows = Sample() 10 sys.exit(app.exec_()) 11 12class Sample(QWidget): 13 def __init__(self): 14 super().__init__() 15 self.initUI() 16 17 def initUI(self): 18 okButton = QPushButton('OK') 19 cancelButton = QPushButton("Cancel") 20 21 message = QLabel('ひらがな・カタカナは文字化け.漢字は文字化けしない') 22 23 hbox = QHBoxLayout() 24 hbox.addStretch(1) 25 hbox.addWidget(okButton) 26 hbox.addWidget(cancelButton) 27 28 vbox = QVBoxLayout() 29 vbox.addWidget(message) 30 vbox.addLayout(hbox) 31 32 self.setLayout(vbox) 33 34 self.setGeometry(300, 300, 250, 150) 35 self.setWindowTitle('タイトルは何故か文字化けしない') 36 self.show() 37 38if __name__ == '__main__': 39 main() 40

###補足情報
他の環境でも文字化けするのかは確認できていません.(もしかしてMint特有の現象?)
PyQt5とSipはソースコードからのインストールです.

追記

python3

1message.setFont(QFont('IPAゴシック', 18))

を追記して,先頭にーを追記し,文字化けしなかった時の絵.
new_screen
漢字とひらがな・カタカナでフォントが違う.

kenz_san👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

tr()やQString::fromLocal8Bit()なんかは試されました?

投稿2016/03/25 04:10

wakuwaku

総合スコア386

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

「化」の字が中国っぽい書体なところからの想像ですが、
もしかして化けないケースでは、文字列に「ー(長音)」が入っていないですかね。

長音を除く平仮名・片仮名・漢字だけからなるテキストは、機械的に日本語か中国語か判定できません。ただし長音は中国の文字コード体系に含まれないので、これがあれば日本語テキストだと判定できます。

例示されているケースでは中国語と優先的に判定されて中国語フォントが当てられ、その中国語フォントが平仮名・片仮名を実装していなかったというケースのように見えます。

投稿2016/03/25 03:48

yuba

総合スコア5568

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yokko-san

2016/03/25 05:55

yuba様 質問次の画像ファイルは,どちらも同じソースコードのため, 'ひらがな・カタカナは文字化け.漢字は文字化けしない' という文字列がでるはずなのです. また,実行するたびに文字化けが起こる・起こらないが変わるというのが, 本現象です. 長音記号を入れてみたのですが,やはり文字化けが起こるとき起こらない時の 両方が発生するようです.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問