PHP中如何避免echo输出&macr时生成¯字符?
解决echo输出时
&macr被解析为¯的问题 这个问题大概率是你的字符串在双引号中时,部分字符序列被shell或者终端的字符解析机制误处理了——具体来说,&macr里的¯被识别成了表示 Macron 字符(¯)的实体序列,导致输出变形。
这里有几个可靠的解决办法:
改用单引号包裹字符串:
在shell环境中,单引号会完全原样保留字符串内容,不会解析任何转义字符或特殊序列。把你的命令改成这样:echo 'direct=1&closeBrowser=1&savelog=log.txt&storage=xfile&macrfile=klanta\test.html'这样所有字符都会原封不动地输出,包括
&和反斜杠。转义特殊字符(如果必须用双引号):
如果你因为某些原因必须使用双引号,可以把&转义成\&,避免它被当成实体的起始符:echo "direct=1\&closeBrowser=1\&savelog=log.txt\&storage=xfile\&macrfile=klanta\test.html"不过这种方式需要逐个处理特殊字符,不如单引号来得省心。
检查终端字符编码设置:
少数情况下,终端的字符编码(比如UTF-8与其他编码的差异)也可能导致这类解析问题。确保你的终端使用UTF-8编码,避免特殊字符被错误映射。
另外,注意你字符串里的klanta\test.html——如果这个反斜杠是路径的一部分(比如Windows风格路径),在shell中可能会被当成转义符,要是想保留反斜杠,同样可以用单引号包裹,或者把反斜杠转义成\\。
内容的提问来源于stack exchange,提问作者Michiel Krol
相关产品推荐
相关产品推荐

