所需的字符编码转换列表:windows-1252 到 UTF-8
List of character encoding conversions required : windows-1252 to UTF-8
我有一个充满 badly-encoded 个字符的 SQL 服务器数据库。问题是 ETL 是用错误的默认编码以 Java 编写的,因此直接加载了 badly-encoded 字符。数据库实际上是保存字符 ö 而不是 ö
我已经修复了 ETL 的问题,现在我想修复现有数据。我知道我可以使用 REPLACE() 来替换字符,但我的问题是我没有明确的字符列表以及它们 "supposed" 是什么。
我在互联网上搜索了某种明确的列表,但找不到。我只需要一个大清单:
ö > ö
é > é
等等
编辑:我最初以为 "bad" 编码是 ISO 8859-15,实际上我只是检查了以前的默认字符集,它是 windows-1252。我更新了 post.
的标题
这是一个很大的清单。 UTF-8 将所有 Unicode 编码为每个 Unicode 代码点一到四个字节。有 1,114,111 个 Unicode 代码点(如果 UTF-16 代理被打折则为 1,112,064)。
使用Windows-1252 更容易读取字符串,使用Windows-1252 将它们编码为字节,使用UTF-8 解码它们。 Python 中的示例,因为它是我可以演示的内容:
>>> s = 'öé'
>>> s.encode('Windows-1252').decode('UTF-8')
'öé'
不过请注意,Windows-1252 是有损的。 UTF-8 中使用的某些字节在 Windows-1252 中没有定义,因此在写入数据库时它们可能会被删除。也有可能使用了接近 Windows-1252 的 ISO-8859-1
(又名 latin1
),但所有字节都已定义。
我有一个充满 badly-encoded 个字符的 SQL 服务器数据库。问题是 ETL 是用错误的默认编码以 Java 编写的,因此直接加载了 badly-encoded 字符。数据库实际上是保存字符 ö 而不是 ö
我已经修复了 ETL 的问题,现在我想修复现有数据。我知道我可以使用 REPLACE() 来替换字符,但我的问题是我没有明确的字符列表以及它们 "supposed" 是什么。
我在互联网上搜索了某种明确的列表,但找不到。我只需要一个大清单:
ö > ö
é > é
等等
编辑:我最初以为 "bad" 编码是 ISO 8859-15,实际上我只是检查了以前的默认字符集,它是 windows-1252。我更新了 post.
的标题这是一个很大的清单。 UTF-8 将所有 Unicode 编码为每个 Unicode 代码点一到四个字节。有 1,114,111 个 Unicode 代码点(如果 UTF-16 代理被打折则为 1,112,064)。
使用Windows-1252 更容易读取字符串,使用Windows-1252 将它们编码为字节,使用UTF-8 解码它们。 Python 中的示例,因为它是我可以演示的内容:
>>> s = 'öé'
>>> s.encode('Windows-1252').decode('UTF-8')
'öé'
不过请注意,Windows-1252 是有损的。 UTF-8 中使用的某些字节在 Windows-1252 中没有定义,因此在写入数据库时它们可能会被删除。也有可能使用了接近 Windows-1252 的 ISO-8859-1
(又名 latin1
),但所有字节都已定义。