我正在从网站接收来自网站的 ISO-8859-2 数据,然后将其转换为 UTF-8(也用作 MySQL 中的编码)并进行一些修改并存储数据...
当我打印数据时,一切似乎都很好......当我将数据存储到我的表并从那里打印时,一切都很好......但是当我比较新收到的数据并与存储在 mysql 中的数据进行比较时,我总是得到尽管数据相同,但不匹配。所以我检查了 DB .. 当我在 DB 中打开数据时,我看到末尾或中间有一个符号...示例:Ä、‡ 等。
有什么想法吗?
更新:我使用 InnoDB 存储引擎来启用事务......并且确切的数据库编码是 UTF8_GENERAL_CI
最佳答案
我得到了 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,即使仍然包含一些奇怪的字符... @ 开头是为了避免在出现故障时抛出错误...
我相信这确实是一个特殊案例 - 我处理外部数据已经很长时间了,没有遇到过这样的案例,但希望有一天有人会需要它......
感谢大家的帮助与合作……如果没有社区的支持,我无法解决这个问题!谢谢!
关于PHP 和 MySQL 编码和奇怪的标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13247683/