Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter:URL错误中的UTF-8_Php_Codeigniter_Url_Utf 8 - Fatal编程技术网

Php Codeigniter:URL错误中的UTF-8

Php Codeigniter:URL错误中的UTF-8,php,codeigniter,url,utf-8,Php,Codeigniter,Url,Utf 8,首先,很抱歉我的英语不好 我正在使用代码点火器。 当我在UTF8中创建一个动态地址时,会得到奇怪的字符 url如下所示:domian.com/article/שלום#.T9H1U9WRGSo 而不是:domain.com/article/שלום 链接看起来不错: <a href="http://www.domain.com/article/שלום">Text</a> 但是当我点击链接后,我会重定向到这里(在除IE以外的所有浏览器中): domain.com/a

首先,很抱歉我的英语不好

我正在使用代码点火器。 当我在UTF8中创建一个动态地址时,会得到奇怪的字符

url如下所示:domian.com/article/שלום#.T9H1U9WRGSo

而不是:domain.com/article/שלום

链接看起来不错:

<a href="http://www.domain.com/article/שלום">Text</a>

但是当我点击链接后,我会重定向到这里(在除IE以外的所有浏览器中):

domain.com/article/שלום#.T9H1U9WRGSo


谢谢大家:)

好的,我们的交易是你的URL中不能有非ascii字符

必须对字符进行翻译或编码

  • 看看文本助手文档中描述的convert_accent_characters()和foreign_chars.php; 或
  • 看看codeigniter的urlencode(),它将非ascii字母编码为正确的%代码
  • 有趣的是,如果您查看类似的站点,则该符号在URL中看起来是正确的,因为浏览器正在正确地将%代码转换为 ש你的象征

    编辑:有些人报告说这种方法有效

    $hebrew  = 'ס֑ס֒ס֓ס֔ס֕ס֖ס֗ס֘ס֙ס֚ס֛ס֜ס֝ס֞ס֟ס֠ס֡ס֢ס֣ס֤ס֥ס֦ס֧ס֨ס֩ס֪ס֫ס֬ס֭ס֮ס֯סְסֱסֲסֳסִסֵסֶסַסָסֹוֺסֻסּסֽ־סֿ׀סׁסׂ׃סׄסׅ׆סׇאבגדהוזחטיךכלםמןנסעףפץצקרשתװױײ׳״';  
    $config['permitted_uri_chars'] = $hebrew . ' a-z 0-9~%.:_\-';
    

    (老实说,如果字母表错了,请不要怪我:p)

    好的,所以问题是URL中不能有非ascii字符

    必须对字符进行翻译或编码

  • 看看文本助手文档中描述的convert_accent_characters()和foreign_chars.php; 或
  • 看看codeigniter的urlencode(),它将非ascii字母编码为正确的%代码
  • 有趣的是,如果您查看类似的站点,则该符号在URL中看起来是正确的,因为浏览器正在正确地将%代码转换为 ש你的象征

    编辑:有些人报告说这种方法有效

    $hebrew  = 'ס֑ס֒ס֓ס֔ס֕ס֖ס֗ס֘ס֙ס֚ס֛ס֜ס֝ס֞ס֟ס֠ס֡ס֢ס֣ס֤ס֥ס֦ס֧ס֨ס֩ס֪ס֫ס֬ס֭ס֮ס֯סְסֱסֲסֳסִסֵסֶסַסָסֹוֺסֻסּסֽ־סֿ׀סׁסׂ׃סׄסׅ׆סׇאבגדהוזחטיךכלםמןנסעףפץצקרשתװױײ׳״';  
    $config['permitted_uri_chars'] = $hebrew . ' a-z 0-9~%.:_\-';
    

    (老实说,如果字母表错了,不要怪我:p)

    我无法解释为什么Codeigniter可能会或可能不会将您重定向到
    #
    URL,但URL不能包含非ASCII字符。需要使用
    urlencode
    对所有非ASCII字符进行百分比转义:

    <a href="http://www.domain.com/article/<?php echo urlencode('שלום'); ?>">Text</a>
    
    
    

    由于浏览器应该在最坏的情况下在后台执行此操作,我不能说这会解决问题,但至少它更正确。

    我无法解释为什么Codeigniter可能会或可能不会将您重定向到
    URL,但URL不能包含非ASCII字符。需要使用
    urlencode
    对所有非ASCII字符进行百分比转义:

    <a href="http://www.domain.com/article/<?php echo urlencode('שלום'); ?>">Text</a>
    
    
    
    由于浏览器应该在最坏的情况下在后台执行此操作,我不能说这会解决问题,但至少它更正确。

    它不是有效的ASCII字节(仅0-127)它不是有效的ASCII字节(仅0-127)