UTF-8用在freebsd瑞典字符(AAO)MySQL和PHP [复制](UTF-8 with m

2019-09-18 07:20发布

可能重复:
UTF-8,一路过关斩将

您好我最近从Linux切换到freebsb我的服务器上,现在我的数据库出问题了。

当我尝试回声含A,A或O(瑞典字母)成为一个问号的字符串。 即:Söndag成为Sndag。 回声“A”; 作品。 $文件--mime test.php的test.php的:text / plain的; 字符集= 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。

我完全被卡住! 怎么了?

干杯!

Answer 1:

好像你不使用UTF-8 无所不在 ,所以您的数据得到了在某些时候搞砸。 这取决于你在做什么,你就必须更改/添加以下点(最有可能它是一个或多个SET CHARSET / mysql_set_charset你忘了):

  • 告诉MySQL使用UTF-8。 要做到这一点,添加到您的my.cnf:

     collation_server = utf8_unicode_ci character_set_server = utf8 
  • 与MySQL进行交互前,送出这两querys:

     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 (åäö) [duplicate]