gpt4 book ai didi

php - 如果 default_charset 为空,字符集是什么

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:05:10 25 4
gpt4 key购买 nike

从 PHP 5.6 开始,default_charset 字符串被设置为 "UTF-8",例如in the php.ini documentation .它表示该字符串对于早期版本是空的。

当我创建一个 Java 库来与 PHP 通信时,我需要知道当一个字符串在内部作为字节处理时我应该期待哪些值。如果 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_encodingiconv.input_encoding)。

在 PHP 5.6 中引入了新的 php.ini 设置 default_charset。旧设置已弃用,所有接受可选 $encoding 参数的函数现在应在未明确指定编码时默认为 default_charset 值。

但是,开发人员有责任确保字符串中的文本实际按照指定的编码进行编码。


链接:

关于php - 如果 default_charset 为空,字符集是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27345626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com