php gt 转,php – 编码mysql时出错 – >如何将其重新转换为其他内容?

我不久前在我的数据库和网站上使用错误的CHARSET创建了一个网站. HTML被设置为ISO …而DB被设置为拉丁语…,页面被保存在西方拉丁语……一团糟.

该网站是法语,所以我创建了一个功能,将所有重音如“é”替换为“& eacute;”.这暂时解决了这个问题.

我刚学到了很多关于编程的知识,现在我的文件保存为Unicode UTF-8,HTML是UTF-8,我的MySQL表列设置为ut8_encoding …

我试图将重音移回“é”而不是“& eacute;”,但是我在MySQL和页面显示时都会遇到(?)或奇怪的字符“â”的常见字符集问题.

我需要找到一种方法来更新我的sql,通过一个清理字符串的函数,使它最终恢复正常.目前我的功能看起来像这样,但不起作用:

function stripAcc3($value){

$ent = array(

'à'=>'à',

'â'=>'â',

'ù'=>'ù',

'û'=>'û',

'é'=>'é',

'è'=>'è',

'ê'=>'ê',

'ç'=>'ç',

'Ç'=>'Ç',

"î"=>'î',

"Ï"=>'ï',

"ö"=>'ö',

"ô"=>'ô',

"ë"=>'ë',

"ü"=>'ü',

"Ä"=>'ä',

"€"=>'€',

"′"=> "'",

"é"=> "é"

);

return strtr($value, $ent);

}

欢迎任何帮助.提前致谢.如果您需要代码,请告诉我哪个部分.

UPDATE

如果您想获得赏金积分,我需要详细说明如何操作.谢谢.

最佳答案:

请尝试使用以下函数,它应该处理您描述的所有问题:

function makeStringUTF8($data)

{

if (is_string($data) === true)

{

// has html entities?

if (strpos($data, '&') !== false)

{

// if so, revert back to normal

$data = html_entity_decode($data, ENT_QUOTES, 'UTF-8');

}

// make sure it's UTF-8

if (function_exists('iconv') === true)

{

return @iconv('UTF-8', 'UTF-8//IGNORE', $data);

}

else if (function_exists('mb_convert_encoding') === true)

{

return mb_convert_encoding($data, 'UTF-8', 'UTF-8');

}

return utf8_encode(utf8_decode($data));

}

else if (is_array($data) === true)

{

$result = array();

foreach ($data as $key => $value)

{

$result[makeStringUTF8($key)] = makeStringUTF8($value);

}

return $result;

}

return $data;

}

关于如何使用它的具体说明,我建议如下:

>导出您的旧拉丁数据库(我希望您仍然拥有它)内容作为SQL / CSV转储*

>在文件内容上使用上述功能,并将结果保存在另一个文件中

>将您在上一步中生成的文件导入到UTF-8感知架构/数据库中

*示例:

file_put_contents('utf8.sql', makeStringUTF8(file_get_contents('latin.sql')));

如果它不让我知道,这应该这样做.

标签:php,mysql,encoding,character-encoding

来源: https://codeday.me/bug/20190515/1109073.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值