• 締切済み

PythonでprintをすべてSJISで表示させるには?

WindowsでPython2.6でコンソールに日本語を表示させているのですが、ソースはUTF-8限定で、printだけ(エンコード関数を使わずに)でSJISが表示できる、おまじないや設定はあるのでしょうか?

  • sdst
  • お礼率0% (0/27)

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

import sys,codecs sys.stdout = codecs.getwriter('shift_jis')(sys.stdout) かなぁ。 ・文字列はunicode文字列で ・stdout以外の出力先を指定してるprintには、別途指定する必要がある

関連するQ&A

  • Pythonでの日本語処理

    Pythonでの日本語処理 Windows環境でPythonを勉強し始めたところです(本当に始めたばかりです)。 エンコードは「utf-8」が推奨されているようなので、 # coding: utf-8 print u'全角でも' print u'半角でも' print u'ともかくutf-8でエンコードして、且つ頭にuを付ける。' というような書き方で統一してしまおうと思っているのですが、 Pythonに詳しい方のご意見をいただきたく。 よろしくお願いいたします。

  • Pythonで非日本語のUnicode文字が使えない

    日本Pythonユーザ会が配布している、Windows用のPython2.6.1を使用していますが、 日本語以外のUnicode文字、アクセントのあるフランス語やウムラウトのあるドイツ語を 「Unicode文字として」扱うと、強制終了してしまいます。 たとえば UTF-8 で保存した test.py   # encoding: utf-8   txt = u"日本語、にほんご、Japanese"   print txt   raw_input() は正しく実行・表示できますが、   # encoding: utf-8   txt = u"Français"   print txt   raw_input() とすると実行しても強制終了されてしまいます。 "u" を外すと "Franテァais" と表示してくれますが…。 どうすればフランス語の文字などを扱えるのでしょうか? Python初心者(1ヶ月程度)ですので、時間があれば、詳しく具体的に教えていただけると助かります。

  • EmEditorでSJISファイルをUTF-8に

    EmEditorでSJISファイルをUTF-8に変換したいと思い、「名前を付けて保存」でUTF-8を選択して保存しました。 すると、次回開く時に、「指定したエンコードで変換できない文字が含まれています・・・」というポップアップが出てしまいます。 日本語を含む、SJISファイルをUTF-8に変換するにはこの手順だけではいけないのでしょうか? どうぞよろしくお願い致します。

  • Python の utf16le デコードが化ける。

    Python2.5で日本語を扱おうと試みています。 utf16le で書かれた "名" という文字を他の文字コードに変換しようとすると、なぜか"吊"に化けるという現象に悩んでいます。 他の文字ではこのような現象は見ていないのですが、何か使い方を間違っているのでしょうか? ちなみに、コンソールでは例えばna.txt の内容が "名"1文字として、 import codecs utf16_file = codecs.open('na.txt', 'r', 'utf_16_le') print utf16_file.readline() とすると"吊"が表示されてしまいます・・・。 どなたか原因に心当たりがあったら教えてください。m(_ _)m

  • pythonの文字コードについて

    pythonの各文字コードにおける日本語の扱われ方について分からないことがあります。 日本語1文字の長さはユニコード文字列では1、8ビット文字列では3という説明が参考書には書いてありました。しかし、実際に実行してみると私の環境では結果が異なりました。さらに文字化けまで起きてしまいました。なぜなのでしょうか?回答お願いいたします。 windowsを使用しており、バージョンはpython2.7です。 以下、私の環境下での実行結果です。 >>> ustr=u"あいうえお" >>> len(ustr) 10 >>> len(ustr.encode("utf-8")) 20 >>> print ustr ‚ ‚¢‚¤‚¦‚¨ >>> print ustr.encode("utf-8") ツつツつ「ツつ、ツつヲツつィ >>> ustr2="あいうえお" >>> len(ustr2) 10 >>> print ustr2 あいうえお

  • pythonでの日本語操作

    お世話になります。 現在、pythonにてあるディレクトリの一覧を表示させるプログラムをしているのですが、対象の中に日本語を含むディレクトリ・ファイルがあると 処理が行われません。 現在書いているコードです。↓ #! /usr/bin/env python # -*- coding: utf-8 -*- # ファイルとサブディレクトリのパスを表示する import os, os.path path = "D:\Myfiles\あいうえお\ " for root, dirs, files in os.walk(path): for file in files: print os.path.join(root) 環境はwindowsXP,python2.6です。 エンコード・デコードを行ったのですがうまくいきませんでした。 ちなみに、pathに日本語が含まれない場合には、一覧が取得できます。 お手数ですが、分かる方いらっしゃいましたら教えてくださいませ。

  • centos python

    以前WindowsでPythonのWebプログラムを書いていました。 webサーバーはapacheを利用しています。 そちらをcentOS(apache)に持って行きたいです。 ↓↓↓↓こちらがwindowsでのスクリプトです #! C:/Python27/python # coding: utf-8 temple_body= u""" <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>Pythonタイトル</title> </head> <body> <h1>Python テンプレート</h1> テンプレートです</br> </body> </html>""" try: print "Content-type: text/html;charset=utf-8\n" print ( temple_body.format() ).encode('utf-8') except Exception as e: print e ただテンプレートと表示されるだけのものです。 この1行目の #! C:/Python27/python を #! /usr/bin/python2.7 と直したところ サイトは開けず 500 Internal Server Error が、 エラーログには以下のようなものが出ていました。 End of script output before headers: index.py AH01215: (13)Permission denied: exec of '/var/www/html/index.py' failed #! /usr/bin/python2.7の部分が問題だと思うのですが どのように直せばいいのかがわかりません。 windowsの時は.exeを探し、Pathを指定しました。 しかし、centosでpython.exeに相当するものがどこにあるのか分りません。 centosの場合どのようなぱすを指定すれば良いのでしょうか?

  • インターネットのホームページでソースを表示すると

    WindowsXP、IntenetExplorer7を使っています。 ホームページ(楽天)のソース内容を見ていますが、日本語文字列で表示されるところが お呪いみたいな文字で表示されますが、どうしたら読めるようになりますか。 現在の設定はメニューバー→表示→エンコード→自動選択(日本語)です。

  • pythonのエラーについて教えて下さい。

    pythonの勉強をおこなっている超初心者です。 ネットでみた。以下のサンプルコードを実行しようとしました。 # -*- coding: utf-8 -*- print u'モジュールのロード' def test(): print u'関数:testを呼び出しました' if __name__ == '__main__': print 'python-izm' # print 'パイソンイズム' test() しかし、以下の様なエラーとなってしまいます。 File ”test02.py"、line 9 print ’python-izm'  ^ indentionError:expected an indented block ネット調べてみたとことpythonのインデントのエラーだとわかりました。 pythonはインデントで実行範囲を認識するので、 そこがうまく記述できていないであろうとは思うのですが、何回か試したのですが うまく動いてくれません。 どなたか御指南下さい。

  • UTF-8の「~」をsjisにencodeすると「?」になってしまいます

    <?xml version="1.0" encoding="UTF-8" ?> <root> <data>あ~お</data> </root> というようなXMLをXML::Simpleでparseし、 use Encode; $data = encode("sjis", $xmldata); のようにsjisにエンコードしてhtmlで表示させたところ、 「あ~お」の「~」のところが「?」になってしまいます。 これを「あ~お」と表示するにはどうしたらよいでしょうか。 表示する方のHTMLのコードはShift_JISでなければなりません。 アドバイスのほど、よろしくお願いいたします。

    • ベストアンサー
    • Perl