
在后端开发过程中有一类问题看起来很简单但实际开发和排查问题时经常会遇到例如URL 参数为什么变成了一堆%JSON 字符串为什么多了一层反斜杠Base64 编码后的内容到底是什么Unicode 字符串如何转换HTML 实体amp;、lt;是什么意思接口返回的数据为什么和数据库里的内容不一样这些问题通常不值得专门写一套复杂程序处理但又经常需要临时查看和转换。平时开发时可以直接使用 PHP、JavaScript 等代码处理也可以使用在线工具快速确认数据格式。类似的临时处理我会用 UO在线工具中的文本和开发类工具辅助检查。一、URL 编码到底解决什么问题URL 中并不是所有字符都适合直接传输。例如https://example.com/search?keyword你好实际传输时中文通常会经过 URL 编码%E4%BD%A0%E5%A5%BD在 PHP 中可以直接使用$url urlencode(你好); echo $url;解码则使用$text urldecode(%E4%BD%A0%E5%A5%BD); echo $text;开发接口时如果发现参数中出现%E4%BD%A0%E5%A5%BD、%2F、%3D等内容不一定是数据异常很可能只是 URL 编码。这类问题使用 UO在线工具进行临时编码、解码可以比较快地确认原始数据。二、JSON 中为什么会出现反斜杠这是接口开发中非常常见的问题。例如原始 JSON{ name: 张三, age: 20 }经过一次字符串化以后可能变成{\name\:\张三\,\age\:20}这里的\并不是 JSON 数据本身多出来了而是因为 JSON 又被当成了字符串。PHP 中经常可以看到类似代码$data array( name 张三, age 20 ); $json json_encode($data); echo $json;结果{name:张三,age:20}如果继续echo json_encode($json);就会变成{\name\:\张三\,\age\:20}所以排查接口数据时需要先判断当前变量到底是数组还是JSON字符串还是JSON字符串再次被JSON编码很多所谓的“JSON 多了一层反斜杠”实际上都是重复编码造成的。三、Base64 和加密不是一回事Base64 在接口开发中也非常常见。例如$str hello; $result base64_encode($str); echo $result;结果aGVsbG8解码echo base64_decode(aGVsbG8);得到hello需要注意的是Base64 不是加密算法。它只是把二进制数据转换成适合文本传输的字符串。所以Base64(password)并不能作为密码保护方式。在接口调试、图片数据、Token 参数、文件内容等场景中经常可以看到 Base64。如果只是想快速确认一段字符串经过 Base64 编码以后是什么内容在线工具会比临时写一个 PHP 文件更加方便。四、HTML 实体也是一种常见的字符串问题网页内容中经常会出现lt; gt; amp; quot;例如lt;divgt;Hellolt;/divgt;实际上对应divHello/divPHP 中可以使用htmlspecialchars(divHello/div);进行 HTML 特殊字符转义。反过来如果需要恢复 HTML 实体可以使用htmlspecialchars_decode(lt;divgt;Hellolt;/divgt;);这类数据在爬虫、富文本、接口返回、数据库存储以及模板渲染中都比较常见。五、Unicode 转义接口调试的时候还可能看到这样的内容\u4f60\u597d它实际上代表你好JSON 中使用 Unicode 转义并不代表数据损坏。例如{ message: \u4f60\u597d }解析以后得到的就是{ message: 你好 }PHP 中$data json_decode($json, true); echo $data[message];就可以直接获取中文。因此看到接口返回\u4e2d\u6587时第一反应应该是判断它是不是 JSON Unicode 转义而不是直接认为接口乱码。六、字符串出现乱码时先检查编码乱码问题通常不能只看页面。常见编码包括UTF-8 GBK GB2312 ISO-8859-1现在 Web 项目基本以 UTF-8 为主。PHP 文件一般建议使用 UTF-8 编码。HTMLmeta charsetUTF-8数据库连接也需要注意字符集。例如 MySQLSET NAMES utf8mb4;如果 PHP、MySQL、HTML 三个环节使用的字符集不一致就可能出现或者中文显示异常。所以遇到乱码时不要只修改页面字体应该从数据源 → PHP → 数据库 → HTTP响应 → 浏览器整个链路检查。七、开发中经常需要处理哪些字符串后端开发中比较常见的临时字符串处理包括JSON格式化 URL编码/解码 Base64编码/解码 Unicode转换 HTML实体转换 字符串转义 文本去重 大小写转换 空白字符处理 正则表达式测试这些功能本身都不复杂但开发过程中经常需要临时处理一段数据。比如接口返回了一大段压缩后的 JSON{id:1001,name:test,items:[{id:1},{id:2}]}如果直接查看会比较困难格式化以后{ id: 1001, name: test, items: [ { id: 1 }, { id: 2 } ] }排查字段结构就会方便很多。同样如果拿到一段 URL 编码或者 Base64 数据也可以先转换成可读内容再继续分析。八、在线工具和本地代码怎么选择对于正式业务逻辑还是应该写进程序。例如$timestamp time(); $json json_encode($data); $base64 base64_encode($content);这些属于业务代码应该由程序自动处理。而下面这种情况临时看一下某个 JSON 确认一个时间戳对应什么时间 测试一下正则 判断一段字符串是不是 Base64 临时进行 URL 编码使用在线工具会更加直接。所以在线工具更适合解决开发过程中的“小问题”而不是替代 IDE、调试器或者项目代码。九、敏感数据不要直接提交到在线工具使用在线工具处理数据时还需要注意数据安全。以下内容不建议直接复制到第三方在线工具用户密码 AccessKey SecretKey Token 数据库密码 身份证号码 银行卡信息 生产环境密钥 内部业务数据如果只是测试格式可以先进行脱敏。例如真实手机号 13812345678 测试数据 13800000000接口返回的数据也可以只保留结构把真实业务数据替换掉。对于生产环境问题优先使用本地脚本、开发环境或者服务器上的调试工具。十、总结后端开发中有很多问题并不复杂但非常容易浪费时间。尤其是JSON URL 编码 Base64 HTML 实体 Unicode 字符集 字符串转义这些内容单独看都很简单但在接口开发和问题排查过程中出现的频率并不低。把常用的临时处理功能集中起来可以减少频繁搜索和重复写测试代码的时间。这类开发过程中经常用到的在线小工具我整理到了UO在线工具https://uotool.com目前主要包含 JSON、文本、编码转换、开发辅助等常见工具适合处理一些简单、临时、非敏感的数据。对于正式项目还是应该以代码和本地开发环境为主对于简单的临时数据处理在线工具可以作为一个补充。