【问题标题】:collation/character set should I use for English and Spanish?我应该将排序规则/字符集用于英语和西班牙语吗?
【发布时间】:2013-11-09 00:21:48
【问题描述】:

我有一个包含英语和西班牙语文章的网站.. 我将我的字符集<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 和 mySQL phpAdmin 表设置为utf8_general_ci,但是我得到了一些混乱的字符,例如

中的ó

Andrea El JabóN Y La Pasta 牙科

从这里 [我应该为英语和西班牙语使用什么 MySQL 排序规则/字符集?建议给我们utf8_latin_ci 但是 我没有在 phpMyAdmin 中看到选择 utf8_latin_ci 的选项。 我有 MySQL 服务器版本:5.1.70-cll,phpMyAdmin 4.0.5

【问题讨论】:

  • 乱码出现在哪里?在 PHP 输出中,即您的实际网站还是在 PHPMyAdmin(或等效的 MySQL UI)中?如果是前者,您可能希望发布您的连接字符串,去除任何敏感数据,例如用户/密码/位置。
  • mySQL 数据库中有混乱的字符。连接代码是:$connection = mysql_connect($DB_HOST_dest, $DB_USER_dest, $DB_PASSWORD_dest, false) //mysql_set_charset('utf8',$connection ); or die("Unable to connect to MySQL" . mysql_error()); $db_found = mysql_select_db($DB_NAME_dest); 最好的转换方式是什么?在更改表排序规则的数据库中查找和替换?

标签: php mysql utf-8 phpmyadmin content-type


【解决方案1】:

假设错误的字符在数据库中。手动修复它们。关于连接,我强烈建议尽可能切换到mysqli(参见here)(或PDO,参见here)。 UTF-8 编码本身很好——无需切换到拉丁子集。

据我所知,与 utf-8 的正确连接应该像这样打开:

$dbConnection = mysql_connect($host, $user, $password);
mysql_select_db($dbName, $dbConnection);
mysql_set_charset('utf8', $dbConnection);
mysql_query('SET NAMES "utf8"'); 

这应该在本地选择正确的数据库编码,即确保 PHP 需要 UTF-8 编码数据 (mysql_set_charset) 并确保数据库理解它必须接受 UTF-8 编码数据 (SET NAMES "utf8") (解释here)。

您还应该确保您的 PHP 应用程序发送有关您的编码 header('Content-Type: text/html; charset=utf-8'); 的标头信息。

【讨论】:

  • 谢谢@Nikolas 这解决了我在 wordpress 中的问题 //define(‘DB_CHARSET’, ‘utf8′); //define(‘DB_COLLATE’, ”);define('DB_CHARSET', 'iso-8859-1'); [tipsandtricks-hq.com/… [1]: tipsandtricks-hq.com/… 似乎是 utf8 造成了问题。
猜你喜欢
  • 2011-12-15
  • 2014-03-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
相关资源
最近更新 更多