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中如何将UTF-8十六进制字符串解码为正确的英语_Php_Codeigniter_Utf 8 - Fatal编程技术网

Php 在Codeigniter中如何将UTF-8十六进制字符串解码为正确的英语

Php 在Codeigniter中如何将UTF-8十六进制字符串解码为正确的英语,php,codeigniter,utf-8,Php,Codeigniter,Utf 8,我有codeigniter框架的搜索功能,今天我注意到一些人正在传递字符串,比如Á,ú,ç,é 当输入通过codeigniter核心输入传递时,它将转换为%C3%81、%C3%BA、%C3%A7、%C3%A9,我使用了以下codeigniter助手 $this->load->helper('text'); convert_accented_characters('è'); // output: e 它将è转换为e,但如何将UTF-8-HEX'%C3%A9'或'c3a9'转换为正确

我有codeigniter框架的搜索功能,今天我注意到一些人正在传递字符串,比如Á,ú,ç,é

当输入通过codeigniter核心输入传递时,它将转换为%C3%81、%C3%BA、%C3%A7、%C3%A9,我使用了以下codeigniter助手

$this->load->helper('text');

convert_accented_characters('è'); // output: e

它将è转换为e,但如何将UTF-8-HEX'%C3%A9'或'c3a9'转换为正确的英文字符,如A、u、c、e

您可以使用PHP的内置函数进行UTF-8解码:

utf8_decode(string);

如果您的PHP版本大于或等于5.4,您可以尝试使用音译类

$transliterator = Transliterator::createFromRules(':: NFD; :: [:Nonspacing Mark:] Remove; :: NFC;', Transliterator::FORWARD);
    $test = ['Á', 'ú', 'ç', 'é','Áúçé'];
    foreach($test as $e) {
        $normalized = $transliterator->transliterate($e);
        echo $e. ' --> '.$normalized."\r\n";
    }
输出:

Á --> A ú --> u ç --> c é --> e Áúçé --> Auce 
*默认情况下,它将被禁用。应该在php.ini文件中启用它才能使用此功能

更新

看起来您的数据是URL编码的。因此,您必须使用
urlencode
函数

urldecode("%C3%81, %C3%BA, %C3%A7, %C3%A9"); // Á, ú, ç, é
然后您可以使用CI功能将
è
转换为
e
,您已经在使用它了

convert_accented_characters('è'); // output: e

我有十六进制字符,如:%C3%81、%C3%BA、%C3%A7、%C3%A9,问题是如何将以下十六进制代码转换为正确的字符,更新了我的答案。检查,它可能会帮助你。我已经尝试过,回声utf8_解码('c3a9');它不能将十六进制转换为字符。