我想检测不同语言版本的文件系统的编码为默认值,如Windows OS的操作系统,它会使用不同的编码(ISO-8859-1,MS950,BIG5,gb2312..etc) 所以,我怎么能检测PHP中不同的编码操作系统?任何想法?谢谢。如何在php中检测操作系统编码?
7
A
回答
0
为什么不使用mb_detect_encoding()?
1
Linux没有一个编码,文件名都存储在二进制字符串和可能包含任何数据。解释特定的编码取决于应用程序。大多数情况下,这只会是UTF-8。但是,它取决于文件名的“查看器”。
访问在OS/X的文件系统将使用UTF-8范式D.
不幸的是,我不能回答这是Windows的。在内部,它存储为UTF-16的变体,但是通过我的机器上的PHP访问它,api是CP-1252,但是,这取决于语言。
0
尝试
print_r(explode(";", setlocale(LC_ALL, 0)));
这时就需要转换的代码页编码
0
文件系统没有有一种编码的,每个文件可以使用不同种编码的,所以你需要的是找到一个正确的编码来处理文件名字符串。
要检测文件名的编码,您可以“尝试”将该文件名转换为您已知的所有编码列表,并将原始文件名字符串与转换后的字符串进行比较,如果等于,那么该编码就是您要查找的。
将字符串转换为一个种编码的我用This way。所以要做这个工作,你可以看到下面的例子。
function getActuallEncoding($text) {
$encodingList = array('UTF-8', 'gb2312', 'ISO-8859-1', 'big5'); // Add more if you need.
foreach($encodingList as $oneEncode) {
$oneResult = iconv(mb_detect_encoding($text, mb_detect_order(), true), $oneEncode, $text);
if(md5($oneResult) == md5($text)) return $oneEncode;
}
return "UNKNOWN"; // This return value may cause problem, just let you know.
}
希望有帮助。
相关问题
- 1. 在Clojure中检测操作系统
- 2. jQuery - 检测操作系统和操作系统版本
- 3. 在Bada操作系统上检测编译
- 4. C++检测操作系统版本
- 5. 是否有宏检测操作系统...?
- 6. 从Firefox扩展检测操作系统
- 7. 检测操作系统语言
- 8. 如何检测用户正在运行的操作系统?
- 9. 操作系统在连接时如何检测USB硬盘
- 10. 如何从Silverlight应用程序中检测操作系统?
- 11. 如何检测操作系统中的JMF
- 12. 如何检测make文件中的操作系统?
- 13. 如何检测Flex中的32位或64位操作系统?
- 14. 如何检测ANT中的Windows操作系统
- 15. 如何检测系统信息,如操作系统或设备类型
- 16. C++编译时宏检测windows操作系统
- 17. 如何编程操作系统?
- 18. 如何编写操作系统
- 19. 最简单的方式操作系统检测与PHP?
- 20. 使用PHP远程操作系统检测
- 21. 在Symbian操作系统中检测到电源中断
- 22. 如何使用宏检测iPhone操作系统版本
- 23. 如何从Javascript检测浏览器操作系统?
- 24. 如何使用GWT检测操作系统?
- 25. 如何检测的Windows Small Business Server操作系统?
- 26. 如何正确检测Windows,Linux和Mac操作系统
- 27. Javascript:操作系统检测...如果在Linux上
- 28. 检测如果C++中的Windows操作系统
- 29. 要在Chrome中检测操作系统的JavaScript版本37.0.2062.94
- 30. 在红宝石中检测操作系统
有你在这里检查的其他问题上的SO关于编码识别?看看这一个例子:http://stackoverflow.com/questions/910793/php-detect-encoding-and-make-everything-utf-8或者这一个:http://stackoverflow.com/questions/505562/检测文件编码在PHP –
我不确定文件系统委托编码... mb_list_encodings将返回一个支持的编码列表。 – Incognito
这不是我想要的答案,这是与我的不同的问题 – Jasper