Laravel 4阿拉伯字符

时间:2016-01-19 12:53:38

标签: php mysql pdo laravel-4 utf-8

我有一个laravel 4.2项目,我在数据库中有utf8个字段,但数据存储在此字段中的方式类似于را字符。

在从数据库中选择数据后,在任何php文件(laravel除外)中,使用后( SET NAMES' utf8 ')以正确的方式呈现这些字符。我想在laravel做同样的事情。 (即使不是数据库解决方案)

以下是我的尝试:

  1. 确保所有文件均为utf8
  2. 确保配置文件中的charset和collat​​ion为utf8
  3. 在配置文件中使用PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
  4. 我也尝试使用Blade::setEchoFormat('e(utf8_encode(%s))');,但不知道如何以正确的方式使用它。

    任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:0)

不要使用iconv。不要使用utf8_encode。

你有Mojibake。

您期待را而不是را吗?这是表中的HEX:D8B1D8A7

这是

的经典案例
  • 客户端中的字节在utf8(正常)中正确编码。
  • 您可能默认与SET NAMES latin1(或set_charset('latin1')或...)相关联。 (应该是utf8。)
  • 表格中的列可能是CHARACTER SET utf8,也可能不是ALTER TABLE Tbl MODIFY COLUMN col VARBINARY(...) ...; ALTER TABLE Tbl MODIFY COLUMN col VARCHAR(...) ... CHARACTER SET utf8 ...; ,但应该是这样。

如果您需要修复数据,需要采取" 2步ALTER",类似

NOT NULL

长度足够大而另一个长度足够..." ..."还有其他任何东西(RaiseEvent等)已经在列上。

答案 1 :(得分:0)

好的就是我如何让它发挥作用:

我的问题与我的想法相反。

我所做的就是从database.php配置文件中删除utf8设置,并发表评论 line $ connection-> prepare($ names) - > execute();在MysqlConnector.php文件中

显示正确的单词 感谢所有人,如果有人知道更好的解决方案,请与我分享。

答案 2 :(得分:-1)

将CHARACTER SET设置为utf8并将COLLATE设置为数据库,表和列的utf8_general_ci。

ALTER DATABASE db_name CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE table_name MODIFY column_name column_name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci;