MySQL / PHP charset UTF_8混乱

时间:2013-02-16 15:03:13

标签: php mysql character-encoding

我知道有很多关于这方面的问题并且相信我已经尝试过它的正面或反面但是我似乎仍然很难连接点。

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

  1. ElCorazón
  2. ElCorazón
  3. 字符串1在浏览器中正确显示,但字符串2不显示。字符串1看起来像“ElCorazón”,字符串2看起来像“ElCoraz n”。但是,如果我尝试选择'ElCorazón'或'El Corazon',我只能选择字符串2.

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

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

    1. 我希望能够使用'ElCorazón'或'El Corazon'搜索表格并检索一行等于'ElCorazón'或'El Corazon'。

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

    3. 我一直在打扰如何做以下事情,

      如何准确地清理数据,以免丢失国际字符?

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

      我应该创建两个用于搜索的列和一个用于显示的列吗?

      另一件事,我想在下游进行更简单的字符串格式化,例如将'和'替换为'&'和其他切换全字缩写。

      正如我所说的,我已经搜索过,我已经尝试过iconv,mb_convert_encoding等,但没有得到预期的结果。

      任何有助于连接点的帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

规则很简单

mysql_set_charset('utf8');
连接后

(或类似函数取决于您的mysql API) 和

header('Content-type: text/html; charset=utf-8')
在页面上的任何输出之前