2

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

当我打印数据时,一切似乎都很好......当我将数据存储到我的表并从那里打印时,一切都很好......但是当我比较新收到的数据并与存储在 mysql 中的数据进行比较时,我总是找不到匹配项数据是一样的。所以我检查了 DB .. 当我在 DB 中打开数据时,我看到末尾或中间有一个符号……示例:Ä、‡ 等。

任何想法?

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

4

1 回答 1

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...@ 开头是为了避免在失败时抛出错误...

我相信这确实是一个特定的案例——我用外部数据做了很长时间,没有像这样的案例,但希望有一天有人会需要它......

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

于 2012-11-09T10:11:13.413 回答