php latin1 转utf8,PHP-将UTF8表上的latin1字符转换为UTF8

直到今天,我才意识到我的PHP脚本中缺少此功能:

mysql_set_charset('utf8');

我所有的表都是InnoDB,排序规则为“ utf8_unicode_ci”,我所有的VARCHAR列也均为“ utf8_unicode_ci”。 我的PHP脚本上有Jáuò Iñe,我的所有PHP文件都编码为UTF-8。

因此,直到现在,每次我用变音符号“插入”某些东西时,例如:

mysql_query('INSERT INTO `table` SET `name`="Jáuò Iñe"');

在这种情况下,“名称”内容为:Jáuò Iñe。

由于我固定了PHP和MySQL之间的字符集,因此现在可以正确存储新的INSERT。 但是,我想修复目前“已弄乱”的所有较旧的行。 我已经尝试了很多事情,但是它总是会破坏第一个“非法”字符的字符串。 这是我当前的代码:

$m = mysql_real_escape_string('¿<?php echo "¬\'PHP á (á)ţăriîş "; ?> ă-ţi abcdd;//;ñç´พดแทฝใจคçăâξβψδπλξξςαยนñ ;');

mysql_set_charset('utf8');

mysql_query('INSERT INTO `table` SET `name`="'.$m.'"');

mysql_set_charset('latin1');

mysql_query('INSERT INTO `table` SET `name`="'.$m.'"');

mysql_set_charset('utf8');

$result = mysql_iquery('SELECT * FROM `table`');

while ($row = mysql_fetch_assoc($result)) {

$message = $row['name'];

$message = mb_convert_encoding($message, 'ISO-8859-15', 'UTF-8');

//$message = iconv("UTF-8", "ISO-8859-1//IGNORE", $message);

mysql_iquery('UPDATE `table` SET `name`="'.mysql_real_escape_string($message).'" WHERE `a1`="'.$row['a1'].'"');

}

它用预期的字符“更新”,除了字符串在字符“ă”之后被截断。 我的意思是,字符串中不包括该字符和以下字符。

同样,即使使用// IGNORE和// TRANSLIT,使用“ iconv()”(在代码中注释)进行测试也是如此。

我还测试了ISO-8859-1和ISO-8859-15之间的几个字符集。

我真的需要这里的帮助! 谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值