使用“mbstring.script_encoding”配置

时间:2012-11-20 06:28:26

标签: php mbstring

“mbstring.script encoding”配置的用法是什么?它与mbstring.internal_encoding不同吗?

http://php.net/manual/en/mbstring.configuration.php

1 个答案:

答案 0 :(得分:0)

现在是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'));

在我的INI中我已经有了配置:

mbstring.encoding_translation = On
mbstring.internal_encoding = UTF-8

脚本测试

bool(false) 
bool(true)

其中$input是西里尔字符串%D0%F3%F1%F1%EA%E8%E9


现在让我们更改脚本编码的配置。在php.ini(或在另一个INI中。这取决于您的sys配置),您可以找到像

这样的行
; 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:)