我有一个laravel 4.2
项目,我在数据库中有utf8
个字段,但数据存储在此字段中的方式类似于را
字符。
在从数据库中选择数据后,在任何php文件(laravel除外)中,使用后( SET NAMES' utf8 ')以正确的方式呈现这些字符。我想在laravel做同样的事情。 (即使不是数据库解决方案)
以下是我的尝试:
utf8
utf8
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
我也尝试使用Blade::setEchoFormat('e(utf8_encode(%s))');
,但不知道如何以正确的方式使用它。
任何帮助都将不胜感激。
答案 0 :(得分:0)
不要使用iconv。不要使用utf8_encode。
你有Mojibake。
您期待را
而不是را
吗?这是表中的HEX:D8B1D8A7
?
这是
的经典案例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;