使用php的utf-8_encode无法获得所需的格式或在包含“\ x”的字符串上解码

问题描述 投票:1回答:1

我有一堆包含“\ xaa”,“\ xam”,“\ xaz”等格式的字符串数据。当我将它们打印到屏幕或试图逐个字符地匹配它时,它将无法工作,例如,我不明白这些字符串有很多:

echo "\xaa"; // prints a question mark to the screen
echo "\xa"; // simply shows noting 
$strZero = strlen("\xaa"); // shows 1 as length of string
$strOne = strlen("\xaz"); // but this shows 2 as length of string 

我不知道发生了什么我的意思是我知道它与utf8编码有关。我想要的是逃避这些字符串,如“\\ xaa”并获取字符,长度应为4。

我知道有类似的问题表明:

$str = "\xaa"
utf8_encode($str); // this gives a not "\\xaa"
// or
utf8_decode($str); // this returns a question mark "?"

这些都没有以我想要的方式返回转义字符串,我将如何处理这个实际操作,而不是通过在此之前放置一个额外的反斜杠来手动转义每个字符串。

php
1个回答
0
投票

我认为你对escape sequences有误解。 \用于表示逃逸字符。 \x有特殊意义

\ xhh字符,带十六进制代码hh

UTF-8

U +00EAêc3aa带有CIRCUMFLEX U + 000A 0a的拉丁文小写字母E

哪个可以解释你得到了? (如果您的浏览器不理解UTF-8 0xaa)并且没有(因为0xa似乎不可打印)。

如果你真的想要\xaa\xa作为字符串的值,你将需要\\转义字符:

    echo "\\xaa"; // Should show \xaa
    echo "\\xa"; // Should show \xa 
    $strZero = strlen("\\xaa"); // should be 4 as length of string
    $strOne = strlen("\\xaz"); //  should be 4 as length of string 
© www.soinside.com 2019 - 2024. All rights reserved.