问题描述
我从Windows 7上的C#应用??程序生成了一个SQL脚本。名称条目具有utf8字符。 它可以在Windows机器上找到,我在其中使用python脚本填充数据库。 现在,同一脚本在Linux平台上因抱怨那些特殊字符而失败。
当我在Windows 7上生成包含utf字符的XML文件但在浏览器(IE,Firefox)上无法显示时,发生了类似的事情。
我曾经在Windows XP上生成过这样的脚本,它在任何地方都能完美运行。
1楼
请举一个在“名称条目”中带有“ utf8字符”的脚本的小例子。
您确定它们是utf8
而不是某些像`cp1252'这样的Windows编码吗?
是什么让您确定?
在命令提示符下的Python中尝试以下操作:
... python -c "print repr(open('small_script.sql', 'rb').read())"
输出中有趣的部分是它使用\\xhh
(其中h是任何十六进制数字)表示非ASCII字符的地方,例如\\xc3\\xa2
是带有抑扬音的小a的UTF-8编码。
向我们展示此类输出的代表性示例。
还请告诉我们您从该示例脚本获得的确切错误消息。
更新:看来您具有以cp1252
或类似格式编码的数据( Latin1
aka ISO-8859-1
在Windows上像母鸡一样罕见)。
要使用Python将其导入UTF-8
,您需要执行fixed_data = data.decode('cp1252').encode('utf8')
;
对于C#,我无能为力-您可能想问一个单独的问题。
2楼
假设您使用的是python,请确保您使用的是 。
例如:
s = "Hello world" # Regular String
u = u"Hello Unicode world" # Unicdoe String
编辑:
这是从链接站点读取UTF-8文件的示例:
import codecs
fileObj = codecs.open( "someFile", "r", "utf-8" )
u = fileObj.read() # Returns a Unicode string from the UTF-8 bytes in the file