0

我将项目中的每个 py 脚本编码为 utf-8,因为我们肯定会将我们的应用程序从 Jython 2.2.1 迁移到 Jython 2.5.2。#encoding=utf-8出于这个原因,我在每个 py 文件(

问题出现在包含字符串的脚本中straße,因为它会自动转换为straße.

我怀疑这种变化是由 Pydev 引起的,还是因为 utf-8 不涵盖这种字符而发生的。对于我尚未检测到的其他“奇怪”字符串,我能做些什么来自动避免这个问题?

4

2 回答 2

0

您确定您的 .py 文件使用 UTF-8 编码吗?尝试使用 WebBrowser(作为文本)打开它并检查各种编码。虽然您看到straße它似乎ß是由两个字节编码的(很可能是 UTF-8),但请确保它确实是 UTF-8。

还要检查项目/属性上的 Eclipse 设置。有“文本文件编码”设置的资源面板(我仅将 Eclipse 用于 Java 项目,不知道 Pydev 是否​​使用此设置)。

使用 PyDev 尝试这样的代码并检查结果文件是否包含 UTF-8 文本:

# -*- coding: utf8 -*-

import codecs

f = codecs.open('strasse.txt', 'wb', 'UTF-8')
f.write('straße'.decode('UTF-8'))
f.close()
于 2013-02-27T09:35:03.057 回答
0

我的猜测是,您在该文件中使用了不同的编码(例如cp1252,这是默认的 windows 编码),当您输入utf-8时,它变成了乱码(所以,实际上并不是 PyDev 造成了乱码,而是事实上它以前是另一种编码)。

当您使用它时,还要确保您还将 Eclipse 的默认编码设置为utf-8(这通常是默认的平台编码)——您可以在首选项 > 常规 > 工作区中执行此操作。

作为说明,我认为最常见的发表评论的方式是#coding: utf-8, 其次是#-*- coding: utf-8 -*-(即:not #encoding:utf-8)——尽管所有这些格式都有效(参见 pep:https ://www.python.org/dev/peps/pep- 0263/ )

于 2017-03-22T17:14:06.827 回答