拉拉维尔 4 个阿拉伯字符


Laravel 4 arabic characters

我有一个laravel 4.2项目,我在数据库中有一个utf8字段,但数据存储在这个文件中的方式就像را字符。

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

这是我尝试过的:

  1. 确保所有文件都utf8
  2. 确保在配置文件中utf8字符集和排序规则
  3. 在配置文件中使用PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"

我也尝试使用Blade::setEchoFormat('e(utf8_encode(%s))');但不知道如何以正确的方式使用它。

任何帮助将不胜感激。

不要使用 iconv。 请勿使用utf8_encode。

你有莫吉巴克。

你期待的是را而不是را吗? 这是表中的十六进制吗:D8B1D8A7

这是经典案例

  • 客户端中的字节以 utf8(良好)正确编码。
  • 您可能默认连接了SET NAMES latin1(或set_charset('latin1')或...)。 (应该utf8
  • 表中的列可能CHARACTER SET utf8也可能没有,但应该是这样。

如果您需要修复数据,则需要"2 步 ALTER",例如

ALTER TABLE Tbl MODIFY COLUMN col VARBINARY(...) ...;
ALTER TABLE Tbl MODIFY COLUMN col VARCHAR(...) ... CHARACTER SET utf8 ...;

其中长度足够大,另一个"..."有其他任何东西(NOT NULL等)已经在列上。

好的,

这是我如何让它工作:

的问题与我的想法相反.

我所做的只是从数据库.php配置文件和注释中删除 UTF8 设置第 $connection->准备($names)->执行();在 MysqlConnector.php 文件中

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

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;