写文件中文字符的问题

写文件中文字符的问题

# -*- coding: cp936 -*-

f = open("C:\\test.txt","w")
f.write("中文")
输出文件中“中文”字符显示正常
f.write("芸")
但是输出文件中“芸”字符显示正常为一个黑框

我感觉是用了# -*- coding: cp936 -*-有关,为什么呢?请教请教
可以的啊,没有黑框子出现。

coding是指定文件内容编码的。你可以试改下:# -*- coding: gbk -*
我换了gbk也不行,下面是我测试用的,输出道文件还是一个黑框,

# -*- coding: cp936 -*-
import os
def WriteFile():
    f = open(os.path.join("C:\\","log.txt"),'w')
    f.write("芸")
    f.close()


if __name__ == "__main__":
    WriteFile()



但是如果我把芸字和其他字组合就没问题,比如许茹芸,就能全部输出,但就是单个芸字不能输出
真郁闷,不知道怎么回事,我知道肯定是编码错了,我用记事本打开这个python文件,里面的芸字就是一个黑框,但用python2.5自带的IDLE(Python GUI)打开就没问题,芸字还是芸字。请教高手啊。
你在终端里面运行:

export LANG=zh_CN.gbk

然后再运行python试试。
他是在win下面跑的唉
我在python自带的python shell中

IDLE 1.2.1      
>>> export LANG=zh_CN.gbk
SyntaxError: invalid syntax
>>>

提示出错。你指的是哪个终端呀?
我是在Windows xp下跑的


QUOTE:
原帖由 lunwu2004 于 2008-9-18 13:24 发表
我是在Windows xp下跑的

export LANG=zh_CN.gbk
这个是linux下修改系统语言环境的。。。
搞不定,不管了,用windows自带的记事本打开是有问题,但用写字板打开就没问题。
哈哈,编码用
# -*- coding: utf-8 -*-
刚才那个芸字用记事本就能打开了
但是在创建中文名称的文件夹,文件夹名就乱码了,如name = "中文"
os.mkdir(os.path.join("C:\\",name ))
在中文名前加u就没问题了 name = u"中文"

最后还有个问题就是
newName = os.path.join("C:\\",name )
f.write(name )
由于name中包含中文字符,所以说编码错误
大概意思是
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 21: ordinal not in range(12

这个又是为什么呢?