我如何将这个UTF-8字符串编码为ASCII以将其插入latin1数据库?

时间:2012-11-22 09:11:39

标签: php mysql database utf-8 latin1

我有这个字符串:

  

dsfssdsdfdsf«ظ...ط¯ظظ†طط©طظ...ط¯ط§ظ“ط®ظط§ط¬ط©

它以UTF-8编码,我从远程页面中提取它,我使用file_get_contents函数获取它的内容,远程页面编码为UTF-8,

现在我想将这个字符串插入数据库,它的表编码是latin1,将其显示到具有charset ISO-8859-1的html页面,

我多次尝试将其编码从UTF-8转换为ASCII,或转换为ISO-8859-1以及其他编码如Windows-1256,但它没有成功,字符串出现奇怪的字符,请注意默认字符串包含阿拉伯字符

编码失败结果的示例:

  

dsfssdsdfdsfÃ,Â〜øâ€〜Ã,ïÂÃ〜¸Ã<¢〜ÃÀ€ ©   Ã~·Ã,£Ã~·Ã,ÂÃ~¸â€Â|Ã~·Ã,¯   Ã~·Ã,§Ã~¸â€žÃ~·Ã,®Ã~¸à      

dsfssdsdfdsf«ãÏæäÉÃÍãÏÇáÎæÇÌÉ

1 个答案:

答案 0 :(得分:6)

如果您有UTF-8字符串,请将它们以UTF-8或二进制形式存储到数据库中,因此数据库应该有一个不会更改其编码的列。使用ISO-8859-1编码会破坏字符串。

在具有ISO-8859-1编码的HTML页面中,将数据库中的字符串重新编码为ISO-8859-1以获取所支持的字符以及所有其他字符,请使用HTML实体。在PHP中的函数能够mb_convert_encoding

$usascii = mb_convert_encoding($utf8, 'HTML-ENTITIES', 'UTF-8');