【发布时间】:2016-10-14 13:24:48
【问题描述】:
我正在尝试使用从字符串中提取 n 个字符
substr($originalText,0,250);
第 n 个字符是一个破折号。所以当我在记事本中查看它时,我得到最后一个字符 â€。在我的编辑器 Brackets 中,我什至无法打开它的日志文件,因为它只支持 UTF-8 编码。
我也无法在这个字符串上运行 json_encode。
但是,当我使用substr($originalText,0,251) 时,它工作得很好。我可以打开日志文件,它会显示一个破折号而不是â€。 json_encode 也可以正常工作。
我可以使用mb_convert_encoding($mystring, "UTF-8", "Windows-1252") 来规避这个问题,但是谁能告诉我为什么最后有这些字符会导致错误?
此外,在执行此操作时,我的日志文件显示 †在括号中,这也令人困惑。
我的问题是为什么在字符串末尾有破折号,与在其他任何地方(后面跟着其他字符)不同。
希望我的问题很清楚,如果不是,我可以尝试进一步解释。
谢谢。
【问题讨论】:
-
substr()不是用于处理多字节字符集字符串的最佳函数,请改为查看mb_substr()
标签: php json utf-8 mb-convert-encoding