python - python 脚本中的日文字符

标签 python utf-8

我正在编写一个 python 脚本,将日语单词附加到常见类型的 url 上。我的 IDE(spyder)完美地显示了日语字符,浏览器和我的服务也是如此,但该语言似乎有问题。例如,当我输入时,我的服务给了我正确的答案: http://example.com/translate?lang=ja&word =こんにちは

但在我的 IDE 中:

word = u'こんにちは'

In [29]: url = "http://example.com/translate?lang=ja&word=" + word

In [30]: word
Out[30]: u'\u3053\u3093\u306b\u3061\u306f'

In [31]: url
Out[31]: u'http://example.com/translate?lang=ja&word=\u3053\u3093\u306b\u3061\u306f'

我的服务无法识别该网址。 如何解决?

最佳答案

浏览器为您对查询字符串进行 url 编码。您需要在 Python 中手动完成:

在 Python 2.x 中,使用 urllib.quoteurllib.quote_plus :

>>> import urllib
>>> word = u'こんにちは'
>>> url = "http://example.com/translate?lang=ja&word=" + urllib.quote(word.encode('utf-8'))
>>> url
'http://example.com/translate?lang=ja&word=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF'

在 Python 3.x 中,使用 urllib.parse.quoteurllib.parse.quote_plus :

>>> import urllib.parse
>>> word = u'こんにちは'
>>> url = "http://example.com/translate?lang=ja&word=" + urllib.parse.quote(word, encoding='utf-8')
>>> url
'http://example.com/translate?lang=ja&word=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF'
<小时/>

替代使用 urllib.urlencode (Python 2.x)

>>> "http://example.com/translate?" + urllib.urlencode({'lang': 'ja', 'word': word.encode('utf-8')})
'http://example.com/translate?lang=ja&word=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF'

使用 urllib.parse.urlencode (Python 3.x)

>>> "http://example.com/translate?" + urllib.parse.urlencode({'lang': 'ja', 'word': word}, encoding='utf-8')
'http://example.com/translate?lang=ja&word=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF'

关于python - python 脚本中的日文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28524776/

相关文章:

python - 如何从python中的字符串中提取 token ?

python字节(some_string, 'UTF-8')和str(some_string, 'UTF-8')

perl - 如何计算文件中的所有字符,包括 Control 和 Unicode?

java - 用Java编写UTF-8文件

java - 如何使用java读取euc-kr编码系统中utf8 encodng的文件名?

python - 由于文件权限,Paramiko 失败

python - 在 Postgresql 中将 CURRENT_DATE 设置为常量值以进行单元测试

python - 按时间间隔分组并获取满足条件的第一行

mysql - 拉拉维尔 : How can I store Hindi Character in MySql Database

Python list.append 之后更改元素