某些 utf 字符不会显示在浏览器上并且 python 脚本失败

发布于 2024-09-11 01:08:25 字数 249 浏览 5 评论 0原文

我从 Windows 7 上的 C# 应用程序生成了 SQL 脚本。名称条目具有 utf8 字符。它可以在 Windows 机器上找到,我使用 python 脚本来填充数据库。现在,相同的脚本在 Linux 平台上失败,抱怨这些特殊字符。

当我在 Windows 7 上生成包含 utf 字符的 XML 文件但无法在浏览器(IE、Firefox)上显示时,发生了类似的情况。

我曾经在 Windows XP 上生成这样的脚本,它在任何地方都能完美运行。

I generated a SQL script from a C# application on Windows 7. The name entries have utf8 characters. It works find on Windows machine where I use a python script to populate the db. Now the same script fails on Linux platform complaining about those special characters.

Similar things happened when I generated XML file containing utf chars on Windows 7 but fails to show up on browsers (IE, Firefox.).

I used to generate such scripts on Windows XP and it worked perfect everywhere.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

野の 2024-09-18 01:08:26

请给出一个在“名称条目”中包含“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 又名 ISO-8859-1 是就像 Windows 上母鸡的牙齿一样罕见)。要使用 Python 将其转换为 UTF-8,您需要执行 fixed_data = data.decode('cp1252').encode('utf8');我无法在 C# 方面为您提供帮助——您可能想就此提出一个单独的问题。

Please give a small example of a script with "utf8 characters" in the "name entries". Are you sure that they are utf8 and not some windows encoding like `cp1252'? What makes you sure? Try this in Python at the command prompt:

... python -c "print repr(open('small_script.sql', 'rb').read())"

The interesting parts of the output are where it uses \xhh (where h is any hex digit) to represent non-ASCII characters e.g. \xc3\xa2 is the UTF-8 encoding of the small a with circumflex accent. Show us a representative sample of such output. Also tell us the exact error message(s) that you get from that sample script.

Update: It appears that you have data encoded in cp1252 or similar (Latin1 aka ISO-8859-1 is as rare as hen's teeth on Windows). To get that into UTF-8 using Python, you'd do fixed_data = data.decode('cp1252').encode('utf8'); I can't help you with C# -- you may like to ask a separate question about that.

不必在意 2024-09-18 01:08:26

假设您使用的是 python,请确保使用 Unicode 字符串

例如:

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

Assuming you're using python, make sure you are using Unicode strings.

For example:

s = "Hello world"          # Regular String
u = u"Hello Unicode world" # Unicdoe String

Edit:
Here's an example of reading from a UTF-8 file from the linked site:

import codecs
fileObj = codecs.open( "someFile", "r", "utf-8" )
u = fileObj.read() # Returns a Unicode string from the UTF-8 bytes in the file
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文