“mbstring.script_encoding”配置的用途是什么?它与 mbstring.internal_encoding 不同吗?
问问题
1207 次
1 回答
1
现在是zend.script_encoding
。让我给你看一个例子。
我有一个用 CP1251 编写的脚本。
// script encoded as ANSI. var_dump() says false
var_dump(mb_check_encoding('Кириллица', 'UTF-8'));
$input = $_GET['internalInput'];
var_dump(mb_check_encoding($input, 'UTF-8'));
在我的 INIes 中,我已经有了配置:
mbstring.encoding_translation = On
mbstring.internal_encoding = UTF-8
脚本测试
bool(false)
bool(true)
$input
西里尔字符串在哪里%D0%F3%F1%F1%EA%E8%E9
。
现在让我们更改脚本编码的配置。在php.ini
(或另一个 INIes。这取决于您的系统配置)中,您可以找到类似的行
; If enabled, scripts may be written in encodings that are incompatible with
; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such
; encodings. To use this feature, mbstring extension must be enabled.
; Default: Off
zend.multibyte = On
; Allows to set the default encoding for the scripts. This value will be used
; unless "declare(encoding=...)" directive appears at the top of the script.
; Only affects if zend.multibyte is set.
; Default: ""
zend.script_encoding = CP1251
默认情况下,所有这些行都被注释掉。在这里,我将multibyte
脚本On
编码设置为CP1251
. 再做一次测试。
脚本测试
bool(true)
bool(true)
所以......我们只是轻松地迁移到 UTF-8 :)
于 2012-11-20T10:39:32.373 回答