将ISO-2022-KR文件转换为UTF-8编码的文件
<?php
function TransferUtf8($str)
{
$output=iconv( "iso-2022-kr", "UTF-8//IGNORE" , $str);
return $str;
}
$fpr=fopen("d://newjune_KR.txt","r");
//$fpr=fopen("C://DELL1//DELL//JP//ShiftJIS.txt","r");
$readbyline="";
if(!$fpr)
{
echo "File is not exist";
exit;
}
while (!feof($fpr))
{
$readbyline.=fgets($fpr);
}
fclose($fpr);
$fpw=fopen("d://newjune_UTF8.txt","a");
$retrunstr=EUCKRTransferToUTF8($readbyline);
fwrite($fpw,$retrunstr);
fclose($fpw);
//$fpr=fopen("C://DELL1//DELL//JP//ShiftJIS.txt","r");
$readbyline="";
if(!$fpr)
{
echo "File is not exist";
exit;
}
while (!feof($fpr))
{
$readbyline.=fgets($fpr);
}
fclose($fpr);
$fpw=fopen("d://newjune_UTF8.txt","a");
$retrunstr=EUCKRTransferToUTF8($readbyline);
fwrite($fpw,$retrunstr);
fclose($fpw);
?>
主要就是用了iconv函数。
由于不懂utf-8和php的知识,费了好多力气。
开始用的子码表对每个字符一个一个转换,非常难调试,而且老出错。在网上查了一下,用iconv函数可以直接进行转换,但对于php5以下版本,必须要安装iconv的扩展库。于是从网上down了相关库文件,按照高手说的步骤安装。
安装成功,调用iconv函数后,可以成功的转换为UTF-8格式的文件。
这时,用notepad打开,虽然是unicode编码,却并不能正确显示,必须设置其字体为双字节字体,才可以正确显示。