Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于PHP开发人员来说,Unicode还是UTF-8更好?_Php_Unicode_Encoding_Utf 8 - Fatal编程技术网

对于PHP开发人员来说,Unicode还是UTF-8更好?

对于PHP开发人员来说,Unicode还是UTF-8更好?,php,unicode,encoding,utf-8,Php,Unicode,Encoding,Utf 8,对于PHP开发人员来说,Unicode还是UTF-8更好 我将创建一个国际CMS。因此,我将在全世界拥有客户。他们会说所有可能的语言 对于浏览器识别和数据库数据存储,哪种编码格式更好?“Unicode”不是编码。你可能指的是UTF-8和UTF-16(大端或小端)。对于浏览器支持来说,这真的没什么大不了的。任何现代浏览器都支持这三种功能。您可能会发现UTF-8对于您的数据库来说是最节省空间的。UTF-8是一种Unicode编码。您可能是想在UTF-8和UTF-16之间进行选择 那 开发人员应该对所

对于PHP开发人员来说,Unicode还是UTF-8更好

我将创建一个国际CMS。因此,我将在全世界拥有客户。他们会说所有可能的语言

对于浏览器识别和数据库数据存储,哪种编码格式更好?

“Unicode”不是编码。你可能指的是UTF-8和UTF-16(大端或小端)。对于浏览器支持来说,这真的没什么大不了的。任何现代浏览器都支持这三种功能。您可能会发现UTF-8对于您的数据库来说是最节省空间的。

UTF-8是一种Unicode编码。您可能是想在UTF-8和UTF-16之间进行选择

开发人员应该对所有应用程序使用UTF-8 它们发送到和的Unicode数据 从浏览器接收


对于数据库存储,使用RDBMS更好支持的编码。或者,在其他条件相同的情况下,根据空间效率进行选择。对于英语和大多数欧洲语言,UTF-8较小,而对于亚洲语言,UTF-16较小。

UTF-8是一种Unicode编码,一种将Unicode字符(抽象)序列表示为字节(具体)序列的方式。还有其他编码,比如UTF-16(它有大端和小端变体)。UTF-8和UTF-16都可以表示Unicode中的任何字符,因此无论选择哪种语言,都可以支持所有语言

UTF-8在大多数文本都是西文的情况下非常有用,因为它只在一个字节中表示ASCII字符,但对于“外国”字母表(如中文)中的许多字符,每个字符需要三个字节。另一方面,UTF-16对您可能遇到的所有字符使用两个字节(尽管一些非常深奥的字符,即Unicode“基本多语言平面”之外的字符,需要四个字节)

不过,我不建议在开发国际软件时使用PHP,因为它实际上不支持Unicode。它有一些用于处理Unicode编码的附加函数(看看这些函数),但PHP核心将字符串视为字节,而不是字符,因此标准PHP字符串函数不适合处理编码为多个字节的字符。例如,如果对包含字符UTF-8表示形式的字符串调用PHP的
strlen()
”大", 它将返回3,因为这个字符在UTF-8中占用了三个字节,即使它只是一个字符。使用像子串(或代码>)的字符串分割函数是不稳定的,因为如果在多字节字符的中间分裂,就会损坏字符串。

大多数用于Web开发的其他语言,如Java、C#和Python,都内置了对Unicode的支持,因此您可以将任意Unicode字符放入字符串中,而不必担心在内存中使用哪种编码来表示它们,因为从您的角度看,字符串包含字符,而不是字节。这是一种非常安全的方法呃,使用Unicode文本不太容易出错。出于这个原因和其他原因(PHP并不是一种很好的语言),我建议使用其他方法


(我已经读到PHP6将有适当的Unicode支持,但这还不可用。)

最好使用UTF-8,因为它引用了世界上所有语言的重音。此外,UTF-8还有一个扩展条款,可以添加更多未使用或已识别的字符。我更喜欢并始终使用UTF-8及其系列。

Unicode是一个标准,它定义了一组抽象字符(所谓的代码点)及其属性(是数字还是大写等)。它还定义了某些编码(用字节表示字符的方法),UTF-8就是其中之一。有关更多详细信息,请参见Spolsky


我当然会选择UTF-8,它现在是所有地方的标准,并且有一些很好的特性,比如保留所有7位ASCII字符,这意味着大多数与HTML相关的函数,例如
htmlspecialchars
可以直接在UTF-8表示上使用,因此您离开编码相关的secu的机会较小此外,许多PHP函数明确要求使用UTF-8字符串,而且UTF-8也比UTF-16等其他函数具有更好的文本编辑器支持。

+1对于UTF-*,-1是为了避免将PHP完全用于i18n应用程序。只要您知道在重要的是,PHP完全适合i18n应用程序。这不应该成为支持或反对它的标准。足够,是的,但在我看来不是最佳选择。事实上,我认为在大 3个字母…因为如果你把大 进入数据库,您的数据库将不会想到大 从1开始,ANCII Charecter…@Ole Jak:如果您在数据库中存储多字节字符,了解数据库中使用的编码很重要,这样您就可以确定字节长度。请注意,数据库中使用的编码不一定与应用程序代码中使用的编码相同。@Blender Postgre至少很薄就字符而不是字节而言,字段类型毕竟是varCHAR。实际上,在Unicode术语中,Unicode是一种编码,UTF-8和UTF-16是“转换格式”。最好注意“术语”“与Unicode特定的情况相比,编码在普通情况下的使用方式有所不同。@hippie,它看起来不像是单独定义术语“编码”。但是,我同意有不同的用法。有关术语的详细信息,请参阅。