「MAYAのPythonで日本語で書かれたテキストファイルを読み込んだら文字化けしてしまう」
Pythonでファイルを読み込むには
open()
の関数を使いますが、Python2.x系とPython3.x系ではエンコーディング引数の有無に違いがあります。
Python3.x系のopen関数では
open("textfile","r",encoding="utf-8")
の様に読み込む際に文字コードを指定する事が可能ですが、Python2.x系のopen関数では指定が出来ません。
そのためPython2.x系で文字コードをutf-8で保存した日本語などの2バイトで書かれたテキストファイルをopen()で開くと
textfile_utf8.txt
Python2.7:
textfile = "D:/liquidJumper/textfile_utf8.txt" open_textfile = open(textfile) textfile_read = open_textfile.read() print(textfile_read) open_textfile.close()
結果:
文字化けしてしまいます。
逾槫・亥キ・kanagawa
蜊・痩:chiba
蝓シ邇・saitama
そしてこの記事の主な対象であるMAYAに実装されているPythonのバージョンを調べてみると。
import sys print(sys.version)
結果:
MAYA2020に実装されているPythonはPython2.7.11だと分かりました。
あらためてPython2.7のopen関数では文字コードを指定する事は出来ません。
なので通常open関数を使いMAYAで日本語のテキストファイルを読み込む場合は
textfile = "D:/liquidJumper/textfile_utf8.txt" open_textfile = open(textfile) textfile_read = open_textfile.read() print(textfile_read.decode(encoding="utf-8")) open_textfile.close()
説明:
print(textfile_read.decode(encoding="utf-8"))
読み込んだテキストをdecode()で文字コード変換。
結果:
文字化け無くテキストファイルの内容が出力されました。
神奈川:kanagawa
千葉:chiba
埼玉:saitama
このdecode()で文字コードを変換する一手間を回避し、文字コードを指定してファイルを開く方法として
codecsモジュール
があります。
この記事では、Pythonのcodecsモジュールを使った日本語などのマルチバイトでか書かれたテキストファイルを文字コード指定で読み込む方法を紹介します。
![]() |
Pythonのcodecsモジュールとは
codecsモジュールは文字コードをshift-jisからutf8に変換できるなど、任意にエンコードやデコードを行えるPythonの標準ライブラリモジュールです。
Pythonで文字コードを指定してテキストファイルを読み込む
Pythonで日本語を含むマルチバイト文字を読み込む際は、codecsモジュールを使い文字コードを指定して読み込むことができます。
文字コードをutf8で保存したテキストファイル
ファイル名:textfile_utf8.txt

import codecs textfile = "D:/liquidJumper/textfile_utf8.txt" open_utf8 = codecs.open(textfile, 'r', 'utf-8') print(open_utf8.read()) open_utf8.close()
説明:
open_utf8 = codecs.open(textfile, 'r', 'utf-8’)
codecs.open()を使って文字コード”utf-8”で開きます
print(open_utf8.read())
代入された変数「open_utf8」をread()で読み込みprint()で出力
open_utf8.close()
Fileオブジェクトopen_utf8を閉じます
結果:
テキストファイルの内容が出力されました
神奈川:kanagawa
千葉:chiba
埼玉:saitama
Pythonで文字コードを指定してテキストファイルを作成する
文字コード”utf-8″のテキストファイルに文字列を追記する方法です
文字コードをutf-8に指定したテキストファイル作成しました。
ファイル名:new_textfile.txt
文字コード:UTF-8で保存

# coding:utf-8 import codecs filepath = "D:/liquidJumper/new_textfile.txt" textfile_new = codecs.open(filepath ,"a", "utf_8") textfile_new.write(u"アイウエ:カタカナ") textfile_new.close()
説明:
textfile_new = codecs.open(filepath ,"a", "utf_8")
文字コード”utf-8”で新規作成
textfile_new.write(u"アイウエ:カタカナ")
テキストの内容を記入
textfile_new.close()
Fileオブジェクトnew_fileをクローズ
結果:
文字コードUTF-8の状態でテキストファイルに文字列が追記されました。

“UTF8” “utf8” “utf-8” “utf_8”
のどれでも実行可能です。
MAYAでcodecs()を使って日本語を含むテキストファイルを読み込む
「MAYAで文字コード”utf-8”で保存した日本語が混ざったテキストファイルを読み込む」
open()を使って文字コードを指定しない場合
window = cmds.window() cmds.rowColumnLayout( numberOfColumns=2, columnAttach=(1, 'right', 0), columnWidth=[(1, 100), (2, 250)] ) textstr = cmds.textField(w=350,h=100) cmds.showWindow( window ) textfile = "D:/liquidJumper/textfile_utf8.txt" open_utf8 = open(textfile) cmds.textField(textstr,e=True,text=open_utf8.read()) open_utf8.close()
説明:
cmds.textField(textstr,e=True,text=open_utf8.read())
open()を使って開いたFileオブジェクトを.read()で読み込み、テキストフィールドに入力
結果:
文字化けしてテキストフィールドに表示されました。

codecs()で文字コードを指定した場合
import codecs window = cmds.window() cmds.rowColumnLayout( numberOfColumns=2, columnAttach=(1, 'right', 0), columnWidth=[(1, 100), (2, 250)] ) textstr = cmds.textField(w=350,h=100) cmds.showWindow( window ) textfile = "D:/liquidJumper/textfile_utf8.txt" open_utf8 = codecs.open(textfile, 'r', 'utf-8') cmds.textField(textstr,e=True,text=open_utf8.read()) open_utf8.close()
説明:
open_utf8 = codecs.open(textfile, 'r', 'utf-8')
cmds.textField(textstr,e=True,text=open_utf8.read())
codecs()を使って文字コード”utf-8″に指定して開き、read()で読み込んだテキストファイルの内容をテキストフィールドに入力
結果:
文字化けしないでテキストフィールドに表示されました。

まとめ
Pythonで文字コードを指定してテキストファイルを読み込む方法を紹介しました。
Python3.x系と違いPython2.x系のopen関数は文字コードの指定ができません。
そしてこの記事の対象でもあるMAYAのPythonはPython2.x系が使われているため、個人的にMAYAで外部ファイルを取り扱う場合は今回紹介したcodecs()の使用の検討をオススメします。
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
BTOパソコンの【FRONTIER】
3DCG/動画編集/そしてゲームプレイにも、高性能PCがお得な価格で購入できます
ウィンターセール\アウトレット・大特価・掘り出し物がズラリ!!/2月10日(水)15時まで
■第10世代 intel Core i7-10700KF + NVIDIA RTX 3070 モデルが159,800円!!
■第10世代 intel Core i7-10700F + NVIDIA GTX 1660 モデルが99,800円!!
他 お買い得PCが沢山!全て台数限定なので売り切れる前に是非
▶最新GPUも格安構成も自由に選べる!パソコン買うならBTOの【FRONTIER】
【デジハリONLINEの 基礎動画 + AdobeCC一年ライセンス のお得プラン】
デジタルハリウッドのオンラインCGスクール「デジハリONLINE」が提供する、60時間の基礎動画とAdobe creative cloudの一年版ライセンスがパッケージされた、お得な講座プラン
「Adobeマスター講座」が36,346円(税別)
PhotoshopやIllustratorなどAdobe製品を超お得な価格で利用できてコスパ最強。

▶︎基礎動画教材付きAdobe Creative Cloudを年額36,346円(税別)のお得な価格で使用する方法
【UdemyのおすすめPython学習コース】
ネットショッピングをする感覚で講座を購入し、動画を視聴して学習するシステムのUdemy
そのUdemyで評価が高いPythonの人気講座といえば、現役シリコンバレーエンジニア「酒井潤」講師の講座。Pythonの書き方だけでなくシリコンバレー仕込みの Pythonic(パイソニック)と称されるPythonらしいコードの記述方法や実務での所作まで学べます。
「現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル」 ![]() |
現役シリコンバレーエンジニアが教えるPython入門!応用では、データ解析、データーベース、ネットワーク、暗号化、並列化、テスト、インフラ自動化、キューイングシステム、非同期処理など盛り沢山の内容です! |
![]() |
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|