gpt4 book ai didi

php - 如何修复 laravel Seed 中的 UTF8?

转载 作者:行者123 更新时间:2023-11-29 12:26:10 26 4
gpt4 key购买 nike

我正在尝试将旧数据库导入到我的新 Laravel 项目中。为了简单起见,一些条目是通过法语版的 MS Office 创建的,而旧网站对这些编码的处理非常糟糕。

有撇号,重音符号,奇怪的字符单词必须使文本更漂亮......

  • 在原始文件中,enca 告诉我“未知编码”

  • 我尝试了 python-chardet,它告诉我 ISO-8859-7 (.88)

  • 我尝试使用 ISO-8859-{1-15} 进行 iconv,但效果不佳。

  • 我决定启动我的 Windows 并使用 Notepad++将文件转换为 UTF8-no-bom。最终得到了 enca识别 UTF-8 但实际上毁掉了一半的字符。

  • 我尝试在 /etc/mysql/my.cnf 中添加以下 3 行 UTF8每个测试都是在有和没有它们的情况下完成的(评论/取消评论),到目前为止它没有改变任何东西。

    排序规则服务器 = utf8_unicode_ci
    init-connect='设置名称 utf8'
    字符集服务器 = utf8

  • 我确保这两行位于 /app/config/database.php

    的 mysql 数组中

    '字符集' => 'utf8',
    '排序规则' => 'utf8_unicode_ci',

当前种子文件(简化)如下所示:

<?php
// app/database/seeds/ArticlesTableSeeder.php

class ArticlesTableSeeder extends Seeder
{
public function run()
{
DB::table('articles')->delete();
Articles::create(array(
// ’ != ', I could do a str_replace but
// there are many similar characters spread everywhere
'test1' => utf8_decode("l’année"),
'test2' => "l’année",
'test3' => "l’année"
));

}

}

一旦播种,这就是我在数据库中得到的内容:

test1 > l?ann
test2 > lâannée
test3 > lâannée // Same as test2

我做了这个测试输出:

print_r(utf8_encode($test1));
// l?ann
print_r(utf8_decode($test2));
// l?année
print_r($test3);
// l’année

我现在在这个问题上花费的时间比我应该花的时间多,但我不是那种轻易放弃的人。我不知道该怎么做,所以我想是时候问一下了。

最佳答案

尝试在给定字符串上运行 htmlentities,并支持 UTF-8。

htmlentities($str, ENT_QUOTES, "UTF-8");

http://laravel.com/docs/4.2/helpers#strings

关于php - 如何修复 laravel Seed 中的 UTF8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28278043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com