0

我正在阅读以下文件:

def main(src):
    with open(src, encoding='UTF-8') as incoming:
        for line in incoming:
            data = line
            print(data)
        del line

代码在这一行被击中(我不知道它是否会显示在浏览器中):

    <DT><A HREF="https://www.youtube.com/watch?v=-ygKS7WU4YU" ADD_DATE="1421587655">?*** EarAbuse ♛ &#39;Pppppp&#39; (Official &amp; Uncensored) - YouTube</A>

请注意,B缺少C hess Q ueen (即 \u265b),就在单词EarAbuse似乎导致问题之后 -

Traceback (most recent call last):
  File "a.py", line 18, in <module>
    moduleName.main(fileName)
  File "C:\Users\Systems\Desktop\merc\bm\chrome.py", line 53, in main
    print(data)
  File "C:\Python34\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 '\u265b' in position
87: character maps to <undefined>

我有-

  1. 阅读 docs.python.org/3/howto/unicode.html
  2. 用过的data = repr(line)
  3. errors="surrogateescape"打开文件时使用

没爱。charbase 还说那个 BCQ 的 python 转义是u'\u265b',这是什么意思&我还没有实现它吗?

编辑:奇怪的是,输入print('\u265b')print(♛)在 IDLE 中可以正常工作,没有任何错误并显示漂亮的BCQ - 那么有什么问题,为什么我的代码读不到这一行?

4

2 回答 2

3
于 2015-01-19T16:43:05.257 回答
0

当您尝试打印 BCQ 字符时会出现此问题。我猜您的控制台编码/语言环境不能发出所有 Unicode 代码点 - 即它是 ASCII 或 256 个字符的代码页。

而不是打印,请尝试:

import sys

sys.stdout.buffer.write(data.encode('utf8'))
于 2015-01-19T16:24:44.173 回答