2017-02-15 57 views
0

我正在研究一个应用程序,我需要存储/显示包含许多特殊字符的数据。我已经设置了数据库整理utf8。我已将表utf8和字符集的排序规则设置为utf8_unicode_ci。它存储所有特殊字符,如éâ。但是每当一个角色到来时,它都不会按原样存储。就像每当有一个词“attributedâ€它变成âattributedâ。我目前使用Laravel 5.2(PHP)。MySQL不会存储“€”

我已经试过到目前为止 我已按照我的代码

iconv_set_encoding('internal_encoding', 'UTF-8'); 
    mb_internal_encoding('UTF-8'); 

我也曾尝试

$value = array_map("utf8_encode", $array); 

但这个特殊字符是没有得到保存,因为它是。有没有人让我知道我该怎么做才能让这个特殊角色得到保存。

+0

你试图使用'ISO-8859-1'代替'UTF-8'? – Option

+0

你读过[this](https://bugs.mysql.com/bug.php?id=37724)吗?它建议更改编码类型 –

+0

您的数据是否通过URL?这些数据是如何获得的?你有没有尝试在屏幕上输出它? – itsols

回答

0

尝试在你的MySQL设置你的归类为“utf8_general_ci”

+0

。没有工作 –

+0

你还在你的php文件中使用了你的编码吗? –

+0

是的。那里是 –

0

通常它没有问题,存储标志数据库中的字段。检查您的所有脚本是否使用正确的编码。

将您的表格和该表格中的所有数据设置为utf8_general_ci然后尝试将您的php文件更改为UTF-8。

header('Content-Type: text/html; charset=utf-8'); 

如果你有不正确的数据然后使用。

utf8_encode("test"); 

将您的字符串编码为正确的UTF-8字符串。如果这不起作用,我认为你的数据或你尝试转换的字符串是不正确的。

0

为了能够使用UTF-8字符在查询中必须运行某个查询设置这一点,就像这样:

$db->query("SET NAMES UTF8"); 

但我已经看到了你说你正在使用Laravel。我没有一直在努力,但我想这才是书面的配置的charset参数自动设置,就像在这个问题上的截图: Laravel UTF-8 To Database