我无法从编码未知的.txt文件中获取php中的cyrillic字符。我几乎尝试了我在网上能找到的所有东西。我需要使用什么php函数来获取这个文件的内容?
https://www.dropbox.com/s/w7cex4wiogyytvm/100004-6.txt
编辑
输入:
$path = WWW_ROOT . 'files' . DS . '100002-6.txt';
$string = file_get_contents($path);
debug($string);
输出:调试中断,如果我试图将值保存到数据库,它将失败(BOM会遇到一些问题,无法保存值)。
输入
$path = WWW_ROOT . 'files' . DS . '100002-6.txt';
$string = file_get_contents($path);
$string = mb_convert_encoding ($string , 'utf-8');
debug($string);
输出:
'????? ???:300/500V
???? ???:2000V
????? ???? ??????: ? +70??
?? ??? ?? (????? 5 ??.): ? +160??
????? ?????? ?? ?????: ? +5?? '
输入:
$path = WWW_ROOT . 'files' . DS . '100002-6.txt';
$string = file_get_contents($path);
$string = iconv("UTF-16", "UTF-8//TRANSLIT//IGNORE", $string);
debug($string);
输出:
췮㌰〯㔰ざഊ죱㈰〰嘍્⃰㨠㜰냑ഊ쿰밠⣭㔠⤺⃤⬱㘰냑ഊ췠볭
输入:
$path = WWW_ROOT . 'files' . DS . '100002-6.txt';
$string = file_get_contents($path);
$string = iconv("ISO-8859-5", "UTF-8//TRANSLIT//IGNORE", $string);
debug($string);
输出:
Эюьшэрыхэ эряюэ:300/500V
Шёяшђхэ эряюэ:2000V
ЭрМтшёюър №рсюђэр ђхьях№рђѓ№р: фю +70Аб
Я№ш ъ№рђюъ ёяюМ (эрМьэюуѓ 5 ёхъ.): фю +160Аб
ЭрМэшёър ђхьях№рђѓ№р я№ш шэёђрырішМр: фю +5Аб
现在我测试了多个文件,我认为输入文件不再是Unicode编码的。我成功地读取了我的测试文件,但在重要的文件上(我不知道的编码)仍然什么都没有。所以我改变了问题,编码似乎仍然没有定义。
还有一点需要清理。我可以打开这个文件,在记事本上正常地看到它。它包含导致此问题的循环字符。
文件以CP1251(又名MS-CYRL)(又名"西里尔文(Windows)")编码。
$string = file_get_contents($path);
$string = iconv('CP1251', 'UTF-8', $string);
我是怎么想出来的?在文本编辑器中打开该文件,并尝试了一些相关的编码,直到它看起来正确为止。如果文件编码未知,您几乎无法执行任何其他操作。