UTF8 - > Latin1难度,PHP

时间:2012-03-19 03:43:56

标签: php mysql utf-8 character-encoding latin1

我正在丢失重音字符。

从PHP我下载一个使用UTF8的xml文件,而我的PHP脚本使用Latin1。我无法将UTF8转换为Latin1。

我试过这个:

$meta=mb_convert_encoding($meta,'CP1252','UTF-8');

$meta=mb_convert_encoding($meta,'UTF-8');
$meta=mb_convert_encoding($meta,'CP1252','UTF-8');

但无论哪种方式,重音字符都会被破坏并变成2个字符。

输入:

<title>First book of zoölogy</title>

输出:

<title>First book of zoo?logy</title>

我自己想出来了,请看下面的答案。谢谢大家的帮助!

3 个答案:

答案 0 :(得分:1)

更改表的排序规则Utf8_general_ci并在连接数据库之前使用:

mysql_set_charset("utf8");

我认为这可以解决您的问题。

答案 1 :(得分:1)

这解决了它:

$meta=iconv('UTF-8','CP1252//TRANSLIT',$meta);

之前我不知道iconv,我以为只有mb_strings可以使用,但iconv工作得很好。

答案 2 :(得分:0)

你的MySQL服务器的默认字符集可能是UTF-8。试试这个:
在MySQL连接详细信息之后插入以下查询:

mysql_query("SET NAMES latin1");