首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在包含"\x“的字符串上使用php的utf-8_encode或decode实现所需的格式

无法在包含"\x“的字符串上使用php的utf-8_encode或decode实现所需的格式
EN

Stack Overflow用户
提问于 2019-03-29 04:12:22
回答 1查看 76关注 0票数 1

我有一串包含"\xaa“、"\xam”、"\xaz"格式的字符串数据。例如,当我把它们打印到屏幕上或试图逐字匹配它们时,这些字符串发生的事情太多了,我不明白:

代码语言:javascript
复制
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。

我知道也有类似的问题,比如:

代码语言:javascript
复制
$str = "\xaa"
utf8_encode($str); // this gives a not "\\xaa"
// or
utf8_decode($str); // this returns a question mark "?"

所有这些返回转义字符串的方式都不是我想要的那样,我将如何务实地处理这个字符串,而不是在此之前放置一个额外的反斜杠来手动转义每个字符串。

EN

回答 1

Stack Overflow用户

发布于 2019-03-29 04:35:36

我想你对逸出序列有错误的理解。\用于表示转义字符。\x有一个特殊的含义

使用十六进制代码hh的xhh字符

UTF-8

U+00EAêc3 aa拉丁文小写字母E加上回旋U+000A 0a

这就解释了你得到了一个?(如果您的浏览器不理解UTF-8 0xaa),则什么也不懂(因为0xa似乎无法打印)。

如果实际上希望\xaa\xa作为字符串的值,则需要\\转义字符:

代码语言:javascript
复制
    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 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55410401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档