我用phpExcel插件导入Excel文件。从Excel文件中读取的 法语 字符,输出来时是乱码,请问是怎么回事,英语,日语,韩语的就没问题。Excel表中字符串为:ELM327 OBD2 VGate de numérisation avancés Bluetooth outil d'analyse
读取后输出字符串为:ELM327 OBD2 VGate de num�risation avanc�s Bluetooth outil d'analyse那个加音标的字母e成了乱码。
php文件页面编码格式为utf-8。
$data->setOutputEncoding('UTF-8');
读取后输出字符串为:ELM327 OBD2 VGate de num�risation avanc�s Bluetooth outil d'analyse那个加音标的字母e成了乱码。
php文件页面编码格式为utf-8。
$data->setOutputEncoding('UTF-8');
建议你试试 iconv($str , "gb2312" , "utf-8" );
é 的 扩展ascii 码值是 233 即 chr(233)gbk 内码 0xa8 0xa6
utf-8 内码 0xc3 0xa9所以尽管你 setOutputEncoding('UTF-8') 了,但原文并不是 utf-8 的,所以取回后就成了乱码setOutputEncoding 应该是设置输出的字符集吧?
应该还有一个类似 setInputEncoding 的方法用来设置输入的字符集吧?
是的。
有setInputEncoding函数。CSV.php
public function setInputEncoding($pValue = 'UTF-8')
{
$this->_inputEncoding = $pValue;
return $this;
}SYLK.php
public function setInputEncoding($pValue = 'ANSI')
{
$this->_inputEncoding = $pValue;
return $this;
}
八.德文/法文
Unicode範圍: 00C0-00FF(混用英文字母)
備註:字母上面有2點者為德文, 字母上面有重音符號者為法文
locale編碼: ANSI
1.ANSI
HTML charset: iso-8859-1, windows-1252
RTF charset: 0
編碼方式: 1 byte語系对于法文应显式的执行
$data->setInputEncoding('ANSI');而不是默认的 UTF-8
文件编码为utf-8;$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('UTF-8');
$data->read($file_name);
$data_array = $data -> getExcelResult();
print_r($data_array);读取Excel文件,print_r()输出。浏览器 -> 查看 -> 字符编码 -> Unicode(UTF-8)时显示为乱码。
ELM327 OBD2 VGate de num�risation avanc�s Bluetooth outil d'analyse浏览器 -> 查看 -> 字符编码 -> 西方(ISO-8859-1)时显示正常。
ELM327 OBD2 VGate de numérisation avancés Bluetooth outil d'analyse
请问这样我该怎么转码呢?
iconv('ISO-8859-1', 'UTF-8', $data_array)
上面的转法不可以。
$data->setOutputEncoding('UTF-8');
$data->setOutputEncoding('ANSI');
$data->setOutputEncoding('ISO-8859-1');
这里不管用什么编码格式输出都是乱码。浏览器 -> 查看 -> 字符编码 -> 西方(ISO-8859-1)时显示正常。
必须这样才显示正常。
$data->setInputEncoding('ANSI');
$data->setOutputEncoding('UTF-8');
$data->read($file_name);
$data_array = $data -> getExcelResult();
print_r($data_array);您这样试过了吗?
ELM327 OBD2 VGate de num�risation avanc�s Bluetooth outil d'analyse浏览器 -> 查看 -> 字符编码 -> 西方(ISO-8859-1)时显示正常。
ELM327 OBD2 VGate de numérisation avancés Bluetooth outil d'analyse
$data->setInputEncoding('');
PHPExcel导入Excel时这个函数是没有的。
只有导入cvs文件时才有用到。数据从Excel读取打印出来时 浏览器 -> 查看 -> 字符编码 -> 西方(ISO-8859-1)时显示正常。
这样来说是不是表明,只要将ISO-8859-1转成utf-8码就可以了呢?
我文件、数据库编码都是utf-8。
文件页面为utf-8。
读取Excel文件,print_r()输出。浏览器 -> 查看 -> 字符编码 -> Unicode(UTF-8)时显示为乱码。
ELM327 OBD2 VGate de num�risation avanc�s Bluetooth outil d'analyse浏览器 -> 查看 -> 字符编码 -> 西方(ISO-8859-1)时显示正常。
ELM327 OBD2 VGate de numérisation avancés Bluetooth outil d'analyse请问我要如何转码才能不用设置查看编码格式显示正常呢?以下转码不可用。
iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text)
iconv("UTF-8", "ISO-8859-1//IGNORE", $text)
iconv("UTF-8", "ISO-8859-1", $text)