Character encoding 解码不正确的UTF-8字符串
我有一个小问题,错误编码的数据已经进入数据库的方式。根据我的研究事实发现,我认为字符串数据是直接从包含非utf8字符的页面复制的,我认为是ISO-5589-1 首先,我已经找到了阻止这种情况发生的方法,并将采取措施在将来阻止这种情况发生,但现在为了减轻损害,我需要知道这种编码错误的情况是否可以扭转,以便我能够获得预期的数据 在我的搜索中,我发现了预防措施,但没有解决已经错误编码的数据的方法 以下是数据片段:Character encoding 解码不正确的UTF-8字符串,character-encoding,Character Encoding,我有一个小问题,错误编码的数据已经进入数据库的方式。根据我的研究事实发现,我认为字符串数据是直接从包含非utf8字符的页面复制的,我认为是ISO-5589-1 首先,我已经找到了阻止这种情况发生的方法,并将采取措施在将来阻止这种情况发生,但现在为了减轻损害,我需要知道这种编码错误的情况是否可以扭转,以便我能够获得预期的数据 在我的搜索中,我发现了预防措施,但没有解决已经错误编码的数据的方法 以下是数据片段: ÃÆÃÆÃâà 仅仅看一下它似乎并不明显,但复制它并粘贴到纯文本编辑器中也会显示未显示
ÃÆÃÆÃâÃ
仅仅看一下它似乎并不明显,但复制它并粘贴到纯文本编辑器中也会显示未显示的字符
作为一个整体,我对角色集是非常陌生的,而且通常不熟悉;我不知道你是否需要更多的信息?我可以说,这是捕捉到的灯堆栈,如果这有帮助
提前谢谢。这取决于到底发生了什么。作为一个非常快速的入门,当以某种编码表示文本的字节使用不适当的编码进行解释时,就会发生这种情况。例如,这些字节表示UTF-8中编码的文本Fö:
46 C3 B8 C3 B6
46代表F,C3 B8和C3 B6分别代表ø和ö。
不按照UTF-8规则,而是按照拉丁语-1规则解释这些字节将给出以下字符:
FøÃ∗
五个字符,拉丁-1表中每个字节一个字符
在这种情况下,误解是无损的,即UTF-8文本的每个字节在拉丁语-1中都有意义。另一方面也不能保证。以拉丁语编码的Føö1为例:
46 F8 F6
只有三个字节,拉丁1表中的每个字母对应一个字节。但是,无法在UTF-8中对此进行解释,因此字节序列F8 F6在UTF-8中无效。如何处理这个案件取决于译员;它可以做任何事情,从抛出一个异常,到用问号或其他占位符替换字符。在这种情况下,转换是有损的;由于这是一个无效的操作,因此结果无法保留准确的输入
要想挽回这样的不幸,你首先需要弄清楚问题是否有损。如果是的话,那真是倒霉。如果它是无损的,您可以简单地通过解释和/或以正确的顺序将数据保存在另一种编码中来反转转换
如果UTF-8数据被解释为拉丁语-1数据,但随后错误地从拉丁语-1转换为UTF-8,则可以通过将结果从UTF-8转换为拉丁语-1并将结果解释为UTF-8来逆转这种情况
弄清楚你的案子发生了什么,好好玩玩
阅读。什么样的数据库?如何编码/解码?这是一个PostgreSQL数据库,我不认为有任何编码或解码被明确使用。请显示您的代码。