PHP和MySQL编码和奇怪的迹象

时间:2012-11-06 09:05:02

标签: php mysql encoding

我从一个网站接收来自网站ISO-8859-2的数据,然后将其转换为UTF-8(也用作MySQL中的编码)并进行一些修改和存储数据......

当我打印数据时,一切似乎都很好...当我将数据存储到我的表并从那里打印它时一切都很好......但是当我比较新接收到的数据并与存储在mysql中的数据进行比较时我总是得到尽管数据相同但没有匹配。所以我检查了DB ..当我在DB中打开数据时,我看到最后或中间有一个标志......例如:Ä,‡等等。

有什么想法吗?

更新:我使用InnoDB存储引擎来启用事务..而且精确的DB编码是UTF8_GENERAL_CI

1 个答案:

答案 0 :(得分:0)

我获得了ISO-8859-2输入数据......

首先,我使用:

替换了奇怪的符号
$data = str_replace(chr(194), "", $data);

chr() uses ASCII code to search sign... 

接下来是将数据转换为UTF-8编码

$data = iconv('ISO-8859-2', 'UTF-8//TRANSLIT', $data);

我接收到字符串转换后的字符串,但是同样的符号又出现了,所以我做了

$data = str_replace(chr(194), "", $data);

再次......之后我做了:

$data = @iconv('UTF-8', 'UTF-8//IGNORE', $data);

这给了我清洁的UTF-8,即使有一些奇怪的字符还包括在内......开头的@是为了避免在发生故障时抛出错误......

我认为这确实是一个具体案例 - 我现在对外部数据做了很长时间没有像这样的案例,但希望有一天会有人需要它......

谢谢大家的帮助和合作......如果没有社区支持,我将无法解决这个问题!谢谢!