UTF-8 with mysql and php in freebsd swedish chars (åäö) [重复]
Posted
技术标签:
【中文标题】UTF-8 with mysql and php in freebsd swedish chars (åäö) [重复]【英文标题】:UTF-8 with mysql and php in freebsd swedish chars (åäö) [duplicate] 【发布时间】:2012-06-22 15:52:35 【问题描述】:可能重复:UTF-8 all the way through
您好,我最近在我的服务器上从 linux 切换到了 freebsb,现在我的数据库正在运行。
当我尝试回显包含 å、ä 或 ö(瑞典字母)的字符串时,它会变成一个问号。即:Söndag 成为 Söndag。 回声“ä”;作品。 $文件--mime test.php test.php:文本/纯文本;字符集=utf-8
test.php
<?php
$a="å";
mysql_connect("localhost", "root", ":-)");
mysql_select_db("lidev");
$result=mysql_query("select * from DLG where dag='Onsdag'");
$row=mysql_fetch_array($result);
echo $row['dagens'];
echo "<br>";
echo mb_detect_encoding($row['dagens']);
?>
mb_detect_encoding() 输出“UTF-8” 我的 mysql 表在 utf8_general_ci 中。
我完全被卡住了!怎么了?
干杯!
【问题讨论】:
如果您在一个 php 文件中写入echo "ä";
,并且它输出为 �
,那么您没有将文件保存为 UTF-8。是这样吗?
你需要把header('Content-Type: text/html; charset=utf-8');
放到你正在使用的php文件中echo
withHeader('Content-Type', 'application/json;charset=utf-8;')
【参考方案1】:
似乎您没有在所有地方使用 utf-8,因此您的数据有时会搞砸。根据您的具体操作,您必须更改/添加以下一项或多项(很可能是您忘记的 SET CHARSET
/mysql_set_charset
):
告诉 MySQL 使用 utf-8。为此,请将其添加到您的 my.cnf:
collation_server = utf8_unicode_ci character_set_server = utf8
在与 mysql 交互之前,发送这两个查询:
SET NAMES 'utf8'; CHARSET 'utf8';
或者,或者,让 php 在打开连接后执行此操作:
mysql_set_charset('utf8', $conn); // when using the mysql_-functions mysqli::set_charset('utf8') // when using mysqli
将 UTF-8 设置为数据库的默认字符集
CREATE DATABASE `my_db` DEFAULT CHARACTER SET 'utf8';
对表格做同样的事情:
CREATE TABLE `my_table` ( -- ... ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
假设客户端是浏览器,将您的内容作为 utf-8 和正确的标头提供:
header('Content-type: text/html; charset=utf-8');
为了确保浏览器能够理解,添加一个元标记:
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
最后但同样重要的是,告诉浏览器使用 utf-8 提交表单
<form accept-charset="utf-8" ...>
【讨论】:
为什么要发布重复的答案??? 当我开始写这篇文章时,没有“关闭为重复”-投票,我不会因为我稍后认识到这一点而删除答案,因为它可能仍然有用。确实,你是对的:这个问题是重复的,这就是为什么我也投票关闭它。以上是关于UTF-8 with mysql and php in freebsd swedish chars (åäö) [重复]的主要内容,如果未能解决你的问题,请参考以下文章
NodeJS REST API with MySQL and Express
php socket_with_connect_and_read_timeout.php
Installing Nginx with PHP (as PHP-FPM) and MariaDB (LEMP) on Debian 8