PHP UTF-8的问题 - 如果我创建一个字符串在PHP的是它为UTF-8?

在PHP中,如果我创建一个这样的字符串:

$海峡=“BLA BLA这里是我的字符串”;

我会然后就可以使用MBSTRING功能,该字符串为UTF8操作?

//将这项工作? $海峡= mb_strlen($海峡);

此外,如果我再有一个,我所知道的是 UTF-8另一个字符串(说这是一个提交的表单值,或从数据库中UTF-8字符串),我可以再串联这两个,而不是有什么问题?

//这个怎么样,将这项工作? $海峡= $海峡。 $ utf8_string_from_database;

--------------解决方案-------------

第一个问题:这取决于究竟去串研究。

在PHP(最多PHP5,反正),字符串的字节就是序列。 有没有与之相关的明示或暗示的字符集; 这件事情的程序员必须跟踪。 所以,如果你只把有效的UTF-8字节引号之间(相当容易,如果文件本身被编码为UTF-8),则该字符串将是UTF-8,你可以放心地使用mb_strlen()就可以了。

另外,如果您使用的是一个mbstring功能,你需要明确地告诉它你的字符串的字符集是,无论是与mbstring.internal_encoding或作为最后一个参数的任何MBSTRING功能。

第二个问题:是的,有注意事项。

两个字符串都是独立有效的UTF-8可以安全地字节方式串接(如PHP的.运营商),仍然是有效的UTF-8。 但是,你永远无法确定,而不做一些工作你自己,贴出的字符串是有效的UTF-8。 数据库字符串是更容易一些,如果你仔细设置连接字符集,因为大多数DBMS会做任何转换为​​您服务。

如果你的源代码是UTF-8,则该字符串是UTF-8,如果没有 - 它不是。 因为你的榜样字符串是仅有英语,它是有效的UTF-8。

PHP本身并不知道字符集。 如果你传递的东西MB *功能,它把它作为一个UTF-8字符串。

级联必须做工精细,无论怎样,如果我没有理解UTF-8右:-)只要确保这两个字符串是UTF-8,否则你会得到奇怪的字符串作为结果。

请确保您的DEFAULT_CHARSET指令设置为UTF-8任此执行发生之前。

无论是直接修改php.ini或做它在运行时

<?php

ini_set( 'default_charset', 'UTF-8' );

分类:php 时间:2015-03-16 人气:1
本文关键词: PHP,unicode的,UTF-8
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.228 (s). 9 q(s)