den*_*xic 5 php mysql encoding character-encoding
我不久前在我的数据库和网站上使用错误的CHARSET创建了一个网站.HTML被设置为ISO ...而DB被设置为拉丁语...,页面被保存在西方拉丁语......一团糟.
该网站是法语,所以我创建了一个功能,取代所有口音,如"é"到" é".这暂时解决了这个问题.
我刚学到了很多关于编程的知识,现在我的文件保存为Unicode UTF-8,HTML是UTF-8,我的MySQL表列设置为ut8_encoding ...
我试图将重音移回"é"而不是" é",但是我在MySQL中和页面显示时都得到(?)或奇怪的字符"â"的常见字符集问题.
我需要找到一种方法来更新我的sql,通过一个清理字符串的函数,使它最终恢复正常.目前我的功能看起来像这样,但不起作用:
function stripAcc3($value){
$ent = array(
'à'=>'à',
'â'=>'â',
'ù'=>'ù',
'û'=>'û',
'é'=>'é',
'è'=>'è',
'ê'=>'ê',
'ç'=>'ç',
'Ç'=>'Ç',
"î"=>'î',
"Ï"=>'ï',
"ö"=>'ö',
"ô"=>'ô',
"ë"=>'ë',
"ü"=>'ü',
"Ä"=>'ä',
"€"=>'€',
"′"=> "'",
"é"=> "é"
);
return strtr($value, $ent);
}
Run Code Online (Sandbox Code Playgroud)
欢迎任何帮助.提前致谢.如果您需要代码,请告诉我哪个部分.
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;
}
Run Code Online (Sandbox Code Playgroud)
关于如何使用它的具体说明,我建议如下:
*示例:
file_put_contents('utf8.sql', makeStringUTF8(file_get_contents('latin.sql')));
Run Code Online (Sandbox Code Playgroud)
如果它不让我知道,这应该这样做.