我正在用巴西葡萄牙语开发一个网站,我面临着一些非常烦人的编码问题。
应该这样写的单词:óbito就是这样写的:�bito
我注意到,虽然文本仍然在数据库中,但它们是好的。但是当我在PHP中使用echo时,编码问题就出现了。
我已经做过但没有帮助的事情列表:
1-设置要保存为UTF-8的PHP文件
2-我正在使用这个元标记<meta http-equiv="content-type" content="text/html; charset=utf-8" />
3-我使用了这个SQL查询:
CREATE DATABASE db_name
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_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
;发布于 2010-07-18 07:18:25
您可以使用此函数更改字符集:
$q = mysql_set_charset('utf8');
var_dump($q);(如果函数返回true,则表示已成功)。这应该可以解决您的连接问题。
对于旧版本的PHP,您可以使用以下命令:
<?php
if (function_exists('mysql_set_charset') === false) {
/**
* Sets the client character set.
*
* Note: This function requires MySQL 5.0.7 or later.
*
* @see http://www.php.net/mysql-set-charset
* @param string $charset A valid character set name
* @param resource $link_identifier The MySQL connection
* @return TRUE on success or FALSE on failure
*/
function mysql_set_charset($charset, $link_identifier = null)
{
if ($link_identifier == null) {
return mysql_query('SET NAMES "'.$charset.'"');
} else {
return mysql_query('SET NAMES "'.$charset.'"', $link_identifier);
}
}
}
?>看起来PHP默认使用latin1,但是我找不到改变默认设置的方法。所以我猜你每次开始一个新的连接时都必须使用mysql_set_charset()。
Boa排序。
发布于 2012-09-20 17:56:47
我的问题是这样解决的:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />在页眉中,除了重新创建表和将数据库排序规则更改为utf-8编码之外。
发布于 2012-11-05 14:43:30
对葡萄牙语使用此命令:
<meta http-equiv="Content-Type" content="text/html; charset=pt-BR" />https://stackoverflow.com/questions/3273408
复制相似问题