我有这个麻烦: 我在Blender的脚本中工作,它接收来自URL的文本并制作文本的3D对象。
本文可以用任何语言编写,例如:西班牙语,英语,俄语,阿拉伯语,中文,其他语言......
考虑到这一点,Blender附带的Python并没有所有库,特别是没有urllib。此外,我无法安装任何外部库。
所以我在我的代码中复制并粘贴了unquote函数来转换文本。在这里开始了麻烦。
例如,如果我得到:
在取消引用之后 'Hello%20World'
我得到'Hello World'
并且没事。
但如果文字是:
'%C3%A1%20%C3%A9%20%C3%AD%20%C3%B3%20%C3%BA'
取消引用后'á é à ó úá é à ó ú'
而我想要的是:'á é í ó ú'
最后如果我有这个文字:
'%D9%86%D9%86%D8%AA%D9%8A%D9%84%D8%AA%D9%8A%D8%A8%D9%88%D8%AA'
哪个被解码为'ÙÙتÙÙتÙبÙتÙÙتÙÙتÙبÙت'
,但我希望:'ننتيلتيبوت'
据我研究,问题是字符串的编码,因为如果我这样做:
userText = unquote('%C3%A1%20%C3%A9%20%C3%AD%20%C3%B3%20%C3%BA').encode('latin-1').decode('utf-8')
字符串转换正确,我得到:'á é í ó ú'
。但是在文本是阿拉伯语的情况下,这不起作用。
而且我没有弄清楚它对阿拉伯语文本的正确编码是什么,因为那些看似en encoding python documentation的文件没有用。
无论如何,这个问题比较笼统,因为我没有机会知道文本是怎么回事,我只有文本所在的网址部分。
奇怪的事实是,在我的代码中对任何类型的文本中的字符串进行硬编码都能正常工作。
那么,是否有人知道如何以正确的方式将此URL正确编码并解码为字符串?
谢谢,
Gonza配音。
答案 0 :(得分:1)
我发现问题是与过时的urllib一起使用。
最近我尝试使用我的计算机中的Python 3的urllib并且工作得很好。我的错误是不检查我正在使用的是什么。
我设法在我的代码中导入parse.py:D
现在我只做userText = parse.unquote(url)