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

WITH RECURSIVE and MySQL

php socket_with_connect_and_read_timeout.php

Installing Nginx with PHP (as PHP-FPM) and MariaDB (LEMP) on Debian 8

Working with LOBs in Oracle and PHP

[python] arch linux install mysql and use with python