繁体   English   中英

字符集不起作用-西班牙语字符

[英]Charset is not working - Spanish characters

这真的让我发疯。 我正在建立一个西班牙语网站(意思是许多拉丁字符),并且正在使用Zend框架。

当我保存一个á它会显示为á 我知道是字符集编码,但我不明白为什么。

我的头字符集是<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我的数据库是utf8_general_ci 我已经将字符集更改为其他字符集,并且始终是相同的问题。

当我看到在我的数据库,内容被保存,是á

知道为什么会这样吗? 谢谢!

这是摆脱编码难题的方法:

  1. 您的数据库,表和字段必须使用排序utf8_unicode_ci
  2. 确保您的代码(HTML,PHP ... all )是UTF-8编码的。
  3. 始终使用此meta标记: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. 很长:

如果您有权访问MySQL文件配置my.cnf只需添加以下行:

init-connect='SET NAMES utf8'

这告诉MySQL为每个连接以UTF-8返回结果。

如果您无法编辑my.cnf但使用的是PDO,请按以下方式打开连接:

$pdo = new PDO($dsn, $usr, $pwd, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

如果您不使用PDO ... 开始使用它,还等什么呢? 同时,如果使用ext / MySQLi,则可以在每次连接后执行此操作:

$mysql->set_charset('utf8');

如果您使用普通的旧版ext / MySQL,则执行以下操作:

mysql_set_charset('utf8', $connection);

可以使用unicode映射ASCII映射之外的字符á和其他字符。

在使用UTF-8字符集存储表中的数据时,字符已正确存储。

我建议你

  • 在存储数据之前
  • 在获取数据之前

运行查询SET NAMES UTF-8 这将在照顾ASCII映射之外的字符的情况下获取您的UTF-8数据。

在输出数据时,请确保您正在强制/定向浏览器以使用UTF-8字符集来打印数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM