使用PHP,MySql时出现重音字符问题

时间:2012-02-08 19:27:19

标签: php mysql linux zend-gdata

我在西班牙语特殊字符的问题上需要一些帮助。我首先要做的简要总结。我编写了一个PHP脚本,使用Zend Google PHP API从Google Spreadsheet中获取数据。然后将此数据放入MySql数据库。

$row=$Col->getText(); // getText是返回行中值的Google API。 print "$row"; //我打印内容

但问题是,某些西班牙语字符如ñer显示为Ã呃。稍后在PHP代码中我继续将这些值保存在MySql中。甚至在表格中也是同样的问题。不知道问题出在哪里。

我尝试了各种不同的东西,例如编辑PHP ini文件并添加:

mbstring.language               = Neutral       ; Set default language to Neutral(UTF-8) (default)
mbstring.internal_encoding      = UTF-8         ; Set default internal encoding to UTF-8
mbstring.encoding_translation   = On            ;  HTTP input encoding translation is enabled
mbstring.http_input             = auto          ; Set HTTP input character set dectection to auto
mbstring.http_output            = UTF-8         ; Set HTTP output encoding to UTF-8
mbstring.detect_order           = auto          ; Set default character encoding detection order to auto
mbstring.substitute_character   = none          ; Do not print invalid characters
default_charset                 = UTF-8         ; Default character set for auto content type header
mbstring.func_overload  = 7 ; All non-multibyte-safe functions are overloaded with the mbstring alternatives

在MySql

中添加以下内容
init_connect='SET collation_connection = utf8_unicode_ci; SET NAMES utf8;'

字符集服务器= UTF8 核对服务器= utf8_unicode_ci 跳过字符集的客户端握手

更改数据库和表属性

ALTER DATABASE db_name
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci
; 

ALTER TABLE tbl_name
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
;

在mysql打开连接后立即调用SETNAMES等。

$q="SET NAMES 'utf8'";
$r=mysql_query($q);
mysql_query("SET CHARACTER SET utf8");

但似乎没有任何效果。请帮忙

1 个答案:

答案 0 :(得分:1)

检查浏览器是否也将页面呈现为UTF-8。尝试添加:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">到您HTML页面的<head>

此外,$q="SET NAMES 'utf8'";应为$q="SET NAMES utf8";(无引号)