在PHP中有很多关于变音符号/重音符号的主题,但没有一个能解决我的问题。 我有这段代码:
<!DOCTYPE html>
<html lang="sk">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
$items = scandir("test/");
echo $items[3];
?>
</body>
</html>
$ items [3]是ľšá.png,但显示:ğšápng
我试过了:
foreach(mb_list_encodings() as $chr){
echo mb_convert_encoding($items[3], 'UTF-8', $chr) ." : ".$chr."<br>";
}
但它们都不适合我。 我也试过把这个放在scandir()之前:
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
ini_set('default_charset', 'utf-8');
但没有变化。
这很奇怪,因为我的网站在看到问题(今天)之前一直在工作,而且我没有影响任何代码。
答案 0 :(得分:0)
您尝试将从 1字节编码转换为 UTF-8(双字节),但您看到的错误文件名中包含双字符,所以它已经是UTF-8了! 你需要从UTF-8转换它,对我来说它的工作原理如下:
mb_convert_encoding($items[3], "ISO-8859-15", 'UTF-8'); // its to ISO from UTF-8
我个人使用iconv
echo iconv("UTF-8","ISO-8859-15",$items[3]); // its from UTF-8 to ISO
但我认为如果它们中的任何一个确实有效,那就没什么大不同了。
另外,我建议您检查网络服务器上的文件名,如果他们在上传时意外地被转换了。