前段时间,公司的各种版本都升级到了vs2005。前几天意外地发现,vs2005打不开包含汉字的文件名。 跟了一下,发现fstream中会调用内码转换函数,将汉字文件名转换为乱码了。 其中定义了一个预编译条件 _FN_WIDE,我undef了一下,没有什么作用。还需要研究一下。
暂时的解决办法只能是调用setlocal,或者是不使用fstream,直接用fopen等库函数。
今天使用python,发现其中的string也有同样的问题。如果有汉字,会提示“UnicodeDecodeError: 'ascii' codec can't decode byte 0xbe in position 8: ordinal not in range(128)”。
看来字符集问题每种语言都存在问题啊。估计只能等到ucs-4广泛使用才能解决这个问题了。 但这个过程必定会很长,在这之前,我们应该怎么做呢?