-1

我知道有很多关于这方面的问题,并且相信我已经尝试过对其进行正面或反面,但我似乎仍然很难将这些点联系起来。

所以我得到一个 xml 数据馈送 UTF_8 并将其存储在 MySQL 表中(默认字符集 utf8 排序 utf8_general_ci)。我有一个我希望能够正确搜索的 varchar(255)。在大多数情况下,它按预期工作,但我的数据中包含国际字符,例如,

  1. 埃尔科拉桑
  2. 埃尔科拉松

字符串 1 在浏览器中正确显示,但字符串 2 不正确。字符串 1 看起来像“El Corazón”,字符串 2 看起来像“El Coraz�n”。但是,如果我尝试选择“El Corazón”或“El Corazon”,我只会得到字符串 2。

我想要做的是: 1. 处理和清理数据馈送以保留所有合法字符并丢弃任何损坏的字符、换行符、回车馈送、制表符等。

我的 php 脚本中有 preg_replace,但它删除了我认为是合法字符的 ó。或多或少所有国际字符都被删除了,我不希望发生这种情况,我只想要干净的数据。

  1. 我希望能够使用“El Corazón”或“El Corazon”搜索表并检索等于“El Corazón”或“El Corazon”的行。

  2. 显然,我希望浏览器的所有输出都能正确显示。

我一直在思考如何执行以下操作,

如何准确擦洗数据以免丢失国际字符?

我是否尝试将 ó 转换为 ó 以便搜索功能正常工作并在 php 中转换以正确显示?

我应该创建两列,一列用于搜索,一列用于显示?

另一件事,我想在下游做一些更简单的字符串格式化,比如用 '&' 替换 'and' 和其他切换完整单词的缩写。

正如我所说,我已经搜索并尝试了 iconv、mb_convert_encoding 等,但没有得到想要的结果。

任何连接点的帮助将不胜感激。

4

1 回答 1

0

规则很简单

mysql_set_charset('utf8');

(或类似的功能取决于你的mysql API)连接

header('Content-type: text/html; charset=utf-8')

在页面上的任何输出之前

于 2013-02-16T15:21:41.963 回答