我有一个字节流,它看起来像“\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e”
str_data = '\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e'
str_数据使用以下代码写入文本文件
^{pr2}$如果test_doc是在web浏览器中打开的,并且字符编码被设置为日语,它就可以正常工作了。在
我正在使用reportlab生成pdf。使用以下代码
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfgen.canvas import Canvas
from reportlab.pdfbase.cidfonts import CIDFont
pdfmetrics.registerFont(CIDFont('HeiseiMin-W3','90ms-RKSJ-H'))
pdfmetrics.registerFont(CIDFont('HeiseiKakuGo-W5','90ms-RKSJ-H'))
c = Canvas('test1.pdf')
c.setFont('HeiseiMin-W3-90ms-RKSJ-H', 6)
message1 = '\202\261\202\352\202\315\225\275\220\254\226\276\222\251\202\305\202\267\201B'
message3 = '\xe3\x83\x86\xe3\x82\xb9\xe3\x83\x88';
c.drawString(100, 675,message1)
c.save()
这里我使用message1变量,它以日语输出,我需要使用message3而不是message1来生成pdf。message3生成了garabage,可能是因为编码不正确。在
如果您需要动态检测这些编码,可以看看markpilgrim的优秀开源软件Universal Encoding Detector。在
输出:
^{pr2}$这里有个答案:
message1在
shift_jis
中编码;message3和str\u数据编码在UTF-8
中。它们似乎都代表了日语文本。请参阅以下空闲会话:googletranslate检测到日语,并将其分别翻译成英语“This is Heisei Mincho.”、“Test”和“Japanese”。在
问题是什么?
我想你应该学习更多关于字符串编码的知识。python中的字符串没有附加的编码信息,因此您可以用正确的方式使用它或适当地转换它。看看unicode字符串、编码/解码方法和编解码器模块。并检查c.drawString是否也允许传递unicode字符串,这可能会使您的工作更轻松。在
相关问题 更多 >
编程相关推荐