小编oha*_*987的帖子

来自网站的文字显示为Gibberish而不是希伯来语

我正试图从网站上获取一个字符串.我使用请求模块发送GET请求.

text = requests.get("http://example.com") #send GET requests to the website
print text.text #print the variable
Run Code Online (Sandbox Code Playgroud)

但是,出于某种原因,文字出现在Gibberish而不是希伯来语中:

<div>
<p>שרת</p>
</div>
Run Code Online (Sandbox Code Playgroud)

当我用Fiddler嗅到流量或在我的浏览器中查看网站时,我用希伯来语看到它:

<div>
<p>???</p>
</div>
Run Code Online (Sandbox Code Playgroud)

顺便说一句,html代码包含定义编码的元标记,即utf-8.我试图对文本进行编码,utf-8但仍然是乱码.我尝试使用utf-8它来取消它,但它会引发UnicodeEncodeError异常.我声明我正在使用utf-8脚本的第一行.而且,当我使用内置urllib模块发送请求时,问题也会发生.

我读了Unicode HOWTO,但仍无法修复它.我还在这里阅读了许多线程(关于UnicodeEncodeError异常以及为什么希伯来语在Python中变成乱码)但我仍然无法修复它.

我在Windows机器上使用Python 2.7.9.我在Python IDLE中运行我的脚本.

提前致谢.

python unicode encoding utf-8 decoding

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

使用unicode以任何语言保存文件

我正在创建一个简单的脚本,它使用Reportlab pdf生成模块将图像列表作为输入并输出pdf文件.该脚本采用如上所示的文件名:

from reportlab.pdfgen import canvas
filename = raw_input("Enter pdf filename: ")
c = canvas.Canvas(filename + ".pdf")
c.save()
Run Code Online (Sandbox Code Playgroud)

一切都很棒,直到用户输入非英语文件名(希伯来语,阿拉伯语),导致代码抛出以下异常:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xf9 in position 0: invalid start byte
Run Code Online (Sandbox Code Playgroud)

所以,我决定使用unicode,但是当我使用unicode()它时会抛出另一个例外:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xf9 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

但是,当我解码字符串编码时,它就像一个魅力(希伯来语示例):

from reportlab.pdfgen import canvas
filename = raw_input("Enter pdf filename: ")
filename = filename.decode("windows-1255")
c = canvas.Canvas(filename + ".pdf")
c.save()
Run Code Online (Sandbox Code Playgroud)

我继续尝试另一种方法,并发现如果我u在上面的例子中写字符串之前,它可以用任何语言工作:

from reportlab.pdfgen import canvas
filename …
Run Code Online (Sandbox Code Playgroud)

python unicode encoding reportlab python-2.7

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

从Unicode字符串中删除文件名中的禁止字符的最有效方法

我有一个字符串,其中包含我从Web解析的一些数据,并创建一个以此数据命名的文件.

string = urllib.urlopen("http://example.com").read()
f = open(path + "/" + string + ".txt")
f.write("abcdefg")
f.close()
Run Code Online (Sandbox Code Playgroud)

问题是它可能包含以下字符之一:\ / * ? : " < > |.我正在使用Windows,禁止在文件名中使用这些字符.此外,string在Unicode formar中,大多数解决方案都没用.

所以,我的问题是:剥离这些角色的最有效/ pythonic方式是什么?提前致谢!

编辑:文件名是Unicode格式而不是 str!

python string unicode python-2.7

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

标签 统计

python ×3

unicode ×3

encoding ×2

python-2.7 ×2

decoding ×1

reportlab ×1

string ×1

utf-8 ×1