在Zend Framework中,Zend_Validate_StringLength具有编码属性,可用于在不同字符集之间进行转换(它在字符串上使用iconv_set_encoding).
为什么这是StringLength验证器类的一部分?我是否应该将此与我的字符串长度字段检查一起使用以实施UTF-8?
解决方法:
PHP中的字符串长度是保存字符串所用的字节数.某些编码使用多个字节(例如两个)来存储单个字符.
因此,如果您使用编码将某些字符存储在多个字节中(例如Unicode UTF-8),则需要使用此编码来正确确定字符串长度.
如果使用默认的编码设置,则可能会得到不正确的结果.
但是,我相信所有Zend组件的默认值为UTF-8,这是Web应用程序中的事实上的标准.可惜,这不是PHP的默认值(尚未).