ahk*_*ahk 10 javascript php encoding
以下是文件名的一些示例:
??.jpg (Chinese)
?????????.jpg (Russian)
AbÇöi?Ü?.jpg (Turkish, ISO-8859-9)
...
Run Code Online (Sandbox Code Playgroud)
我试过rawurlencode(mb_convert_encoding($file, "UTF-8", mb_detect_encoding($file)))但这不起作用,所有中文和俄文字符都打印为%3F(常规问号),所有土耳其字符都被删除.
我在Windows,PHP 5.3上测试.
我找到的唯一解决方案是明确输入编码:rawurlencode(mb_convert_encoding($file, "UTF-8", "ISO-8859-9"))这仅适用于土耳其语字符.
顺便说一句,mb_detect_encoding($file)总是为上面的文件返回"UTF-8".
编辑:
我运行以下代码后,我认为mb_convert_encoding()无法解决我的问题:
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("mp", FilesystemIterator::UNIX_PATHS));
$iterator = new RegexIterator($iterator, '/^.+\.(gif|jpg|jpeg|png)$/i', RegexIterator::GET_MATCH);
foreach ($iterator as $file)
{
foreach (mb_list_encodings() as $encoding)
var_dump(rawurlencode(mb_convert_encoding($file[0], "UTF-8", $encoding)) . " : " . $encoding);
}
Run Code Online (Sandbox Code Playgroud)
我想这是关于编码的东西,但我不知道该怎么做.
因此,最主要的是大多数传输(网络、文件、rpc)最多需要一个字节的字符。URL 编码 (%FF) 期望输入数据也是每个字符一个字节。
\n\n所以你需要做的是使用UTF8。它将采用多字节字符并从中生成一个 1 字节字符的字符串。通过这个字符串,您可以执行通常 ascii 可以执行的操作。
\n\n你想要做的是显式设置 php 的编码:
\n\nmb_internal_encoding("UTF-8");\nRun Code Online (Sandbox Code Playgroud)\n\n现在,您的所有内部字符串和文件名等都将采用 UTF-8(单字节)编码。\n从这里您可以按原样回显文件名,它将作为编码数据传输。在 javascript 中,您所要做的就是使用 AJAX 发送请求,它会自动为您整齐地解码,准备在浏览器中使用:) 只需确保在 html 文件中设置内容类型,如下所示将用作您的默认 JS 编码。
\n\n<meta http-equiv=\xe2\x80\x9dContent-Type\xe2\x80\x9d content=\xe2\x80\x9dtext/html; charset=utf-8\xe2\x80\xb3 />\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1202 次 |
| 最近记录: |