所需的字符编码转换列表:Windows-1252到UTF-8

时间:2019-02-07 21:27:59

标签: sql-server utf-8 windows-1252

我有一个SQL Server数据库,里面充满了编码错误的字符。问题在于ETL是用Java编写的,默认编码错误,因此直接加载了编码错误的字符。数据库实际上包含字符ö而不是ö

我已经解决了ETL的问题,现在我想解决现有数据。我知道我可以使用REPLACE()来替换字符,但是我的问题是我没有确定的字符列表以及它们的“假定”对象。

我已经在互联网上搜寻了某种确定的清单,但找不到。我只需要一个这样的清单:

ö>ö

é>é

编辑:我首先认为“不良”编码是ISO 8859-15,实际上我只是检查了以前的默认字符集,它是Windows-1252。我已经更新了帖子的标题。

1 个答案:

答案 0 :(得分:0)

这是一个很大的清单。 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中没有定义,因此有可能在写入数据库时​​将其删除。也有可能使用了ISO-8859-1(又名latin1),它接近Windows-1252,但是所有字节都已定义。