![](/img/trans.png)
[英]MySQL to JSON: Issue with encoding of German special characters in UTF-8
[英]UTF-8 and German characters?
我的网站上有德语字符问题,
在html / php网站的一部分我有这个代码来设置utf-8:
<meta charset="utf-8">
在mysql中,我有这个代码来设置utf-8
SET CHARSET 'utf8';
这里有一些关于德语的词: Gemäß
以下是mysql表中该单词的外观:
Gemäß
以下是该网站上显示的单词: Gemäß
有什么问题? 谢谢。
我正在使用此代码获取标题:
$title = mysql_real_escape_string(htmlentities($_POST['title']));
我只是覆盖它
$title = $_POST['title'];
首先,确保您的数据库中包含UTF-8字符。
之后,尝试在连接到MySQL后使用SET NAMES 'UTF8'
:
$con=mysqli_connect("host", "user", "pw", "db");
if (!$con)
{
die('Failed to connect to mySQL: ' .mysqli_connect_errno());
}
mysqli_query($con, "SET NAMES 'UTF8'") or die("ERROR: ". mysqli_error($con));
正如手册所说:
SET NAMES指示客户端将用于将SQL语句发送到服务器的字符集...它还指定服务器用于将结果发送回客户端的字符集。
尝试SET NAMES 'utf8'
或SET NAMES 'utf-8'
。 其中一些适用于葡萄牙语,也可能适用于德语。 我只是不记得哪一个是正确的,但如果不是,则会产生错误。
你应该确保CONNECTION也是utf-8。
使用mysqli这是通过以下方式完成的:
$connection = mysqli_connect($host, $user, $pass, $db_name);
$connection->set_charset("utf8");
现在,如果你以某种方式在数据库中找到错误的字符,有一种方法可以使它正确:
在HTML5中使用
<meta charset="utf-8">
在HTML 4.0.1中使用
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
我有同样的问题。 我通过使用解决了:
如果您已经创建了表,则需要将字符集修改为:
alter table <table name> convert to character set utf8 collate utf8_general_ci.
默认情况下,MySQL的表格字符集设置为latin_swedish
。
另外,在检索数据并将其显示到您的页面时,您可能会遇到一些问题。这包括: mysql_set_charset('utf8')
就在您连接数据库的行下方。 例如:
mysql_connect('localhost','root','');
mysql_select_db('my db');
mysql_set_charset('utf8');
结果是html实体编码,好像它们是由htmlentities()处理的,我想知道你的变量是从表单接收到的,还是正在通过例如wysiwg编辑器进行处理?
无论如何,这些应该在html模板上打印正常,但html_entity_decode()应该这样做。
希望这可以帮助
您需要为php 5.x
执行此操作
$yourNiceLookingString =
htmlspecialchars ($YourStringFromDB, ENT_COMPAT | ENT_HTML401, 'ISO-8859-1');
并为php 4.x
$yourNiceLookingString = htmlspecialchars($YourStringFromDB);
将数据库中的数据类型设置为使用UTF-8,这应该可以解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.