Maa*_*wes 4 php string character-encoding
在PHP 5.6起default_charset字符串设置"UTF-8"为解释,例如中php.ini的文档.它表示早期版本的字符串为空.
当我创建一个与PHP通信的Java库时,我需要知道在内部处理字符串时我应该期待哪些值.如果default_charset字符串为空并且(文字)字符串包含ASCII范围之外的字符会发生什么?我应该期望平台的默认字符编码,还是用于源文件的字符编码?
对于文字字符串 - 始终是源文件编码.default_charset价值在这里什么都不做
PHP字符串是"二进制安全的",这意味着它们没有任何内部字符串编码.基本上PHP中的字符串只是字节的缓冲区.
对于文字字符串,例如,$s = "Ä"这意味着字符串将包含引号之间保存在文件中的任何字节.如果文件以UTF-8保存,这相当于$s = "\xc3\x84",如果文件保存在ISO-8859-1(latin1)中,则相当于$s = "\xc4".
设置default_charset值不会以任何方式影响存储在字符串中的字节.
default_charset办?一些必须将字符串作为文本处理并且可识别编码的$encoding函数接受作为参数(通常是可选的).这告诉函数文本在字符串中编码的编码.
PHP之前的这些可选5.6默认值$encoding的论点是无论是在功能定义(例如htmlspecialchars()),或在不同的php.ini的配置为每部分单独(例如mbstring.internal_encoding,iconv.input_encoding).
在PHP 5.6 default_charset中引入了新的php.ini设置.不建议使用旧设置,并且当未明确指定编码时,接受可选$encoding参数的所有函数现在应默认为default_charset值.
但是,开发人员有责任确保字符串中的文本实际上是以指定的编码进行编码的.
链接:
default_charset在撰写本文时未提及).default_charset选项的简短介绍.default_chaset选项.