各位好 我是今天開始要學習PYTHON的初學者

188 views
Skip to first unread message

phanis...@gmail.com

unread,
Nov 15, 2008, 11:04:08 AM11/15/08
to python.tw
我有一個問題要問各位高手
我是用Python 學習 但是我發現 python 再編寫的時候不能夠 中英文一起使用 例如 :print '哈囉,世界' 這樣
python會錯誤="=
是不是我在安裝的時候還是在設定的時候有出錯??

Randy Lien

unread,
Nov 15, 2008, 11:12:16 AM11/15/08
to pyth...@googlegroups.com
檔案要設定編碼哦…
在文件最上面加上下面這一句看看 
# -*- coding: utf8 -*-

phanis...@gmail.com

unread,
Nov 15, 2008, 11:31:51 AM11/15/08
to python.tw
我加了 還是不能耶ˊˋ
# -*- coding: utf8 -*-
i=5
print i
i=i+1
print i
s='這是一個字串'
print s
出現錯誤ˊˋ

phanis...@gmail.com

unread,
Nov 15, 2008, 11:33:23 AM11/15/08
to python.tw


On 11月16日, 上午12時31分, "phanissia2...@gmail.com"
忘了說 我是使用Vim 7.2編輯的

Jii Chen

unread,
Nov 15, 2008, 1:36:39 PM11/15/08
to pyth...@googlegroups.com
會不會是語系設定問題?
你在 vim 打 :set :set all 看看你目前的檔案語系為何,像我的會出現
encoding=utf-8
fileencoding=utf-8

phanis...@gmail.com

unread,
Nov 15, 2008, 2:52:11 PM11/15/08
to python.tw
抱歉 我是第一次使用VIM 所以我不知道要怎麼用ˊˋ
拜託大大教我一下 謝謝

On 11月16日, 上午2時36分, "Jii Chen" <chen...@gmail.com> wrote:
> 會不會是語系設定問題?
> 你在 vim 打* :set *或 *:set all* 看看你目前的檔案語系為何,像我的會出現
> encoding=utf-8
> fileencoding=utf-8
>
> 2008/11/16 phanissia2...@gmail.com <phanissia2...@gmail.com>
>
>
>
>
>
> > On 11月16日, 上午12時31分, "phanissia2...@gmail.com"
> > <phanissia2...@gmail.com> wrote:
> > > 我加了 還是不能耶ˊˋ
> > > # -*- coding: utf8 -*-
> > > i=5
> > > print i
> > > i=i+1
> > > print i
> > > s='這是一個字串'
> > > print s
> > > 出現錯誤ˊˋ
> > 忘了說 我是使用Vim 7.2編輯的- 隱藏被引用文字 -
>
> - 顯示被引用文字 -

莊旻儒

unread,
Nov 16, 2008, 4:39:13 AM11/16/08
to pyth...@googlegroups.com
i=5
print i
i=i+1
print i
s='這是一個字串'
print s

把 s='這是一個字串'  改成  s=u'這是一個字串' 就ok了

我也是新手,我想問的是  難道每一行都要這樣加u 嗎@﹍@??

micromilua

unread,
Nov 16, 2008, 4:48:24 AM11/16/08
to pyth...@googlegroups.com
應該說 
在eclipse +pydev 裡面
如果程式最上面加入了 #-*- coding: UTF-8 -*-

run出來的確是ok

可是 在cmd底下 跑出來還是亂碼

除非把字串加入 u   ex:  s=u'科科'

請問在cmd (big 5)底下要看到正常是不是還要寫啥額外的命令@@??

2008/11/16 莊旻儒 <micro...@gmail.com>

alingo

unread,
Nov 16, 2008, 6:57:06 AM11/16/08
to python.tw
這樣子看起來是Terminal設定的問題咧
如果你是用*nix系統的話可以可下#set 或#env檢查一下

我在我的MAC試了一下
只要有加#-*- coding: UTF-8 -*-
是可以看到中文字的


On 11月16日, 下午5時48分, micromilua <micromi...@gmail.com> wrote:
> 應該說 在eclipse +pydev 裡面
> 如果程式最上面加入了 #-*- coding: UTF-8 -*-
>
> run出來的確是ok
>
> 可是 在cmd底下 跑出來還是亂碼
>
> 除非把字串加入 u ex: s=u'科科'
>
> 請問在cmd (big 5)底下要看到正常是不是還要寫啥額外的命令@@??
>
> 2008/11/16 莊旻儒 <micromi...@gmail.com>
>
> > i=5
> > print i
> > i=i+1
> > print i
> > s='這是一個字串'
> > print s
> > 把 s='這是一個字串' 改成 s=u'這是一個字串' 就ok了
>
> > 我也是新手,我想問的是 難道每一行都要這樣加u 嗎@﹍@??
>
> > 2008/11/16 phanissia2...@gmail.com <phanissia2...@gmail.com>

micromilua

unread,
Nov 16, 2008, 7:09:32 AM11/16/08
to pyth...@googlegroups.com
我是在windows 下開啟的cmd

還是不行@@

繼續嘗試看看  謝謝回覆

2008/11/16 alingo <shos...@gmail.com>

alingo

unread,
Nov 16, 2008, 7:28:11 AM11/16/08
to python.tw
在windows要用
#-*- coding: cp950 -*-

話說回頭encoding真的是個惱人的東東


On 11月16日, 下午8時09分, micromilua <micromi...@gmail.com> wrote:
> 我是在windows 下開啟的cmd
> 還是不行@@
>
> 繼續嘗試看看 謝謝回覆
>
> 2008/11/16 alingo <shose...@gmail.com>

phanis...@gmail.com

unread,
Nov 16, 2008, 7:44:51 AM11/16/08
to python.tw
可以了耶 可是這樣變的好麻煩喔ˊˋ
是VIM本身的問題嗎?? 還是PYTHON就是這樣?? 不能像JAVA一樣直接中英文混著編寫?? 還是 是我白痴不會用= =??
> > > > >> > - 顯示被引用文字 -- 隱藏被引用文字 -
>
> - 顯示被引用文字 -

Zoom.Quiet

unread,
Nov 16, 2008, 7:59:58 AM11/16/08
to pyth...@googlegroups.com
2008/11/16 alingo <shos...@gmail.com>:

> 在windows要用
> #-*- coding: cp950 -*-
>
千万别! 用个靠谱的编辑器,在任何地方使用utf-8 是一劳永逸的好习惯,,,

--
http://zoomquiet.org'''
过程改进乃是催生可促生靠谱的人的组织!
PE keeps evolving organizations which promoting people be good!'''
[HR]金山软件常年招聘大量Py/C++人才!
https://groups.google.com/group/python-cn/web/ot-py-c
简历直投俺就好;-)

micromilua

unread,
Nov 16, 2008, 8:00:46 AM11/16/08
to pyth...@googlegroups.com
XD

我剛剛一直鑽牛角尖
cmd -> chcp 65001

原來就差這麼一點點

謝謝alingoㄜ的教學
2008/11/16 alingo <shos...@gmail.com>

micromilua

unread,
Nov 16, 2008, 8:04:15 AM11/16/08
to pyth...@googlegroups.com
應該說還是都宣告成 utf-8 
不過
如果在windows裡面要用的話 就 chcp 950來看

目前我想到的解決方法是這樣  說不定還是有code可以弄出一勞永逸的方法

不過我是新手@@ 還請大家開示一下

2008/11/16 micromilua <micro...@gmail.com>

kaiching

unread,
Nov 16, 2008, 9:51:14 AM11/16/08
to python.tw

Windows 下如要宣告成 UTF-8
*.py 的 Python 執行檔要儲存為 ASCII 編碼(依記事本的方式,其實是Big5,Windows預設的編碼格式)
可參考 http://pydoing.blogspot.com/2008/10/blog-post_9393.html



On 11月16日, 下午9時04分, micromilua <micromi...@gmail.com> wrote:
> 應該說還是都宣告成 utf-8 不過
> 如果在windows裡面要用的話 就 chcp 950來看
>
> 目前我想到的解決方法是這樣 說不定還是有code可以弄出一勞永逸的方法
>
> 不過我是新手@@ 還請大家開示一下
>
> 2008/11/16 micromilua <micromi...@gmail.com>
>
> > XD
> > 我剛剛一直鑽牛角尖
> > cmd -> chcp 65001
>
> > 原來就差這麼一點點
>
> > 謝謝alingoㄜ的教學
> > 2008/11/16 alingo <shose...@gmail.com>

alingo

unread,
Nov 16, 2008, 10:27:29 AM11/16/08
to python.tw
嗯我也認同zoom的講法
用utf-8才是治本之道
不過這樣一來
似乎在windows console下測有中文的python script就不是很方便了

TOO BAD ;(

On 11月16日, 下午9時04分, micromilua <micromi...@gmail.com> wrote:
> 應該說還是都宣告成 utf-8 不過
> 如果在windows裡面要用的話 就 chcp 950來看
>
> 目前我想到的解決方法是這樣 說不定還是有code可以弄出一勞永逸的方法
>
> 不過我是新手@@ 還請大家開示一下
>
> 2008/11/16 micromilua <micromi...@gmail.com>
>
> > XD
> > 我剛剛一直鑽牛角尖
> > cmd -> chcp 65001
>
> > 原來就差這麼一點點
>
> > 謝謝alingoㄜ的教學
> > 2008/11/16 alingo <shose...@gmail.com>

Zoom.Quiet

unread,
Nov 16, 2008, 10:35:22 AM11/16/08
to pyth...@googlegroups.com
2008/11/16 alingo <shos...@gmail.com>:

> 嗯我也認同zoom的講法
> 用utf-8才是治本之道
> 不過這樣一來
> 似乎在windows console下測有中文的python script就不是很方便了
>
Sygwin
或是其它 替代品!

> TOO BAD ;(

Tiberius Teng

unread,
Nov 16, 2008, 10:41:11 AM11/16/08
to pyth...@googlegroups.com
打開 Python25\Lib\site.py

找 def setencoding():

把 # Enable to support locale aware default string encodings 上面的 if 0: 改成 if 1:

然後下面的 # Enable to switch off ... 的 if 1: 改成 if 0:

收工, 往後檔案用 utf8 照樣可以直接 print 出來 ;)

2008/11/16 alingo <shos...@gmail.com>

micromilua

unread,
Nov 17, 2008, 6:18:32 AM11/17/08
to pyth...@googlegroups.com
抱歉 我是用Python26

按照上面說得改了

===================================================

def setencoding():
    """Set the string encoding used by the Unicode implementation.  The
    default is 'ascii', but if you're willing to experiment, you can
    change this."""
    encoding = "ascii" # Default value set by _PyUnicode_Init()
    if 1:
        # Enable to support locale aware default string encodings.
        import locale
        loc = locale.getdefaultlocale()
        if loc[1]:
            encoding = loc[1]
    if 0:
        # Enable to switch off string to Unicode coercion and implicit
        # Unicode to string conversion.
        encoding = "undefined"
    if encoding != "ascii":
        # On Non-Unicode builds this will raise an AttributeError...
        sys.setdefaultencoding(encoding) # Needs Python Unicode build !
===================================================

test code 

==========
#-*- coding: utf-8 -*-

print '科科'
==========

存檔編碼,我是在記事本選utf8

print出來的結果

蝘?

如果換成 print u'科科'

就可以了@@

下面是我google到的網頁 跟上述的差不多


請問是否有人可以解決我的疑惑嗎~?感謝!!
2008/11/16 Tiberius Teng <tiberi...@gmail.com>

micromilua

unread,
Nov 17, 2008, 6:53:35 AM11/17/08
to pyth...@googlegroups.com
再補充一下
在eclispe裡面的console端 print是ok
但是我chcp 65001 (unicode) 後執行也是亂碼
把檔案編碼存成ansi就可以正常顯示(in 記事本)
所以我們用eclispe寫程式的時候 到底該編碼成ansi還是utf8??

2008/11/17 micromilua <micro...@gmail.com>

Tiberius Teng

unread,
Nov 17, 2008, 7:44:33 AM11/17/08
to pyth...@googlegroups.com
這樣是正確的行為
你沒加 u 的話, python 會把它當成 raw binary data 直接送
如果 script source 用的編碼跟執行時的系統不一樣就會爆

加 u 的話, python 會照檔首的設定把字串解成 unicode
輸出時再動態轉換成系統目前使用的 encoding (如果它有辦法知道的話 ...)

windows 的 console 實在很 !@#$%^ ... 盡量別用它測 unicode 或是顯示資料 ...

只要是「文字資料」最好就用 unicode 來存
雖然說起來, 這種東西甚至不該出現在程式碼裡 XD
gettext message catalog 才是它們該去的地方

2008/11/17 micromilua <micro...@gmail.com>

Tiberius Teng

unread,
Nov 17, 2008, 7:46:02 AM11/17/08
to pyth...@googlegroups.com
這一句就是在說 eclipse -_-
它執行 script 的時候是把輸出內容當成 utf-8 來解
但是完全沒有設定相關的 environ
所以這邊能動, 很可能只是運氣好, 拿到其它系統上就炸了 ...

2008/11/17 Tiberius Teng <tiberi...@gmail.com>
輸出時再動態轉換成系統目前使用的 encoding (如果它有辦法知道的話 ...)

gas...@gmail.com

unread,
Nov 17, 2008, 8:11:28 PM11/17/08
to python.tw
是不是用的編輯器預設不是 utf-8 (例如 windows notepad),
先用 python 內建的 IDLE 試試.

ok 的話建議抓 ulipad 或 easyeclipse python 版 (pydev+eclipse) 來用.


--
為什麼會想不開在 windows 上用 vim 哩....

yungyuc

unread,
Nov 22, 2008, 3:15:43 PM11/22/08
to python.tw
應該說,Windows command line 爛到爆,只要是 non-ASCII 都很麻煩。

千萬別再用 Big5/cp950 了。

yungyuc

unread,
Nov 22, 2008, 3:17:23 PM11/22/08
to python.tw
我覺得用 eclipse 才是想不開呀。
Reply all
Reply to author
Forward
0 new messages