相关疑难解决方法(0)

打印出日文(中文)字符

我读日语,想尝试处理一些日文文本.我尝试使用Python 3:

for i in range(1,65535):
    print(chr(i), end='')
Run Code Online (Sandbox Code Playgroud)

然后Python给了我很多错误.什么地方出了错?

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Traceback (most recent call last):
  File "C:\test\char.py", line 11, in <module>
    print(chr(i), end='')
  File "C:\Python31\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\x80' in position 0: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)

我的理解是chr函数继续将Unicode数字转换为相应的日语字符.如果是这样,为什么不输出日文字符?为什么它会在罗马字符列表的末尾崩溃?

如果我错误地认为Unicode集是为了迎合非西方语言而设计的,那么请纠正我.


编辑:

我尝试了John Machin在IDLE中提出的3行,输出工作正常!

在此之前,我一直在使用程序员的记事本,工具设置为捕获python.exe编译器的输出.也许这就是错误发生的原因.

但是,对于大多数其他事情,输出被正确捕获; 那么为什么它在这个过程中特别失败?即为什么代码在IDLE Python Shell中工作,而不是通过Programmer的Notepad输出捕获?无论接口如何,输出都不应该相同吗?

python unicode

2
推荐指数
1
解决办法
1万
查看次数

Python os.walk和日文文件名崩溃

可能重复:
Python,Unicode和Windows控制台

我有一个文件名为"01 - ナナナン块.txt"的文件夹

我在与文件相同的文件夹中的交互式提示符处打开python并尝试遍历文件夹层次结构:

Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> for x in os.walk('.'):
...     print(x)
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "C:\dev\Python31\lib\encodings\cp850.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 17-21: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)

很明显,我正在使用的编码无法处理日文字符.精细.但是根据我的理解,Python 3.1应该是unicode,所以我不知道我对此有何意义.有人有主意吗?

python windows filesystems unicode

2
推荐指数
1
解决办法
1983
查看次数

无法在Python中打印泰米尔语字符

我想在Python中使用Tamil语言.但遇到了困难.这是我的代码

U=u'\u0B83'
print U
Run Code Online (Sandbox Code Playgroud)

这会抛出错误,

UnicodeEncodeError:'ascii'编解码器无法对位置0中的字符u'\ u0b83'进行编码:序数不在范围内(128)

我在ascii中的违约行为.由于u0b83已经是unicode,它应该打印泰米尔语中的角色.

我也试过这个,# - - 编码:utf-8 - - .但结果是一样的.

如何在unicode中设置它?

python unicode tamil

1
推荐指数
1
解决办法
1558
查看次数

在Windows上使用cp1251和utf-8的Unicode

我正在玩unicodepython.

所以有一个简单的脚本:

# -*- coding: cp1251 -*-

print '??????'.decode('cp1251')
print unicode('??????', 'cp1251')
print unicode('??????', 'utf-8')
Run Code Online (Sandbox Code Playgroud)

在cmd中我已将编码切换为Active code page: 1251.

还有输出:

????????????
????????????
??????
Run Code Online (Sandbox Code Playgroud)

我有点困惑.

由于我已经指定了编码,cp1251我希望它能被正确解码.

但结果是有一些垃圾代码点被解释.据我所知,这'??????'只是一个字节: '\xd1\x8e\xd0\xbd\xd0\xb8\xd0\xba\xd0\xbe\xd0\xb4'.

但有一种方法可以在终端中获得正确的输出cp1251?我应该手动构建字节字符串吗?

好像我误解了一些东西.

python unicode encoding python-2.7

1
推荐指数
1
解决办法
2643
查看次数

UnicodeEncodeError: 'charmap' 编解码器无法对位置 0 的字符 '\ufeff' 进行编码:字符映射到 &lt;undefined&gt;

我正在开发一个使用utf-8编码的应用程序。出于调试目的,我需要打印文本。如果我print()直接使用包含我的 unicode 字符串的变量,例如 - print(pred_str).

我收到此错误:

UnicodeEncodeError: 'charmap' 编解码器无法在位置 0 编码字符 '\ufeff':字符映射到

所以我试了一下print(pred_str.encode('utf-8')) ,我的输出是这样的:

b'\xef\xbb\xbfpudgala-dharma-nair\xc4\x81tmyayo\xe1\xb8\xa5 apratipanna-vipratipann\xc4\x81n\xc4\x81m' b'avipar\xc4\xabta-pudgala-dharma-nair\xc4\x81tmya-pratip\xc4\x81dana-artham' b'tri\xe1\xb9\x83\xc5\x9bik\xc4\x81-vij\xc3\xb1apti-prakara\xe1\xb9\x87a-\xc4\x81rambha\xe1\xb8\xa5' b'pudgala-dharma-nair\xc4\x81tmya-pratip\xc4\x81danam punar kle\xc5\x9ba-j\xc3\xb1eya-\xc4\x81vara\xe1\xb9\x87a-prah\xc4\x81\xe1\xb9\x87a-artham'

但是,我希望我的输出看起来像这样:

pudgala-dharma-nair?tmyayo? apratipanna-vipratipann?n?m avipar?ta-pudgala-dharma-nair?tmya-pratip?dana-artham tri??ik?-vijñapti-prakara?a-?rambha? pudgala-dharma-nair?tmya-pratip?danam punar kle?a-jñeya-?vara?a-prah??a-artham

如果我使用以下方法将字符串保存在文件中:

with codecs.open('out.txt', 'w', 'UTF-8') as f:
    f.write(pred_str)
Run Code Online (Sandbox Code Playgroud)

它按预期保存字符串。

python character-encoding python-3.x

1
推荐指数
1
解决办法
3494
查看次数