当前位置: 首页 > 面试题库 >

什么因素使PHP Unicode不兼容?

曾新
2023-03-14
问题内容

我可以在脚本中使用UTF-8字符。

实际上,可以使用变量名称,而函数包含Unicode字符。

还有mb_string扩展名,用于处理多字节字符串,但是在无数文章中,PHP因缺乏Unicode支持而受到批评。

我不明白 为什么说PHP不支持Unicode?


问题答案:

几年前启动PHP时,并没有真正支持UTF-8。我们谈论的是Windows 98 /
Me之类的非Unicode操作系统仍然是当前的时代,而Delphi之类的其他主要语言也是非Unicode的时代。从第一天开始,并不是所有语言都考虑了Unicode的设计,并且很难将语言完全更改为Unicode而又不花很多精力。例如,Delphi仅在一两年前才成为Unicode兼容,而其他语言(如Java或C#)从第一天开始就以Unicode设计。

因此,当PHP成长并成为PHP 3,PHP 4和现在的PHP 5时,没有人决定添加Unicode。为什么?大概是为了与现有脚本兼容,或者因为utf8_de
/
encode和mb_string已经存在并且可以工作。我不确定,但我坚信这与有机增长有关。默认情况下,功能并不简单存在,它们必须由某人编写,而PHP尚未实现。

编辑:好的,我看错了这个问题。问题是:如何在内部存储字符串?如果我键入“Währung”或“Écriture”,则使用哪种编码来创建使用的字节?如果是PHP,则为带有代码页的ASCII。这意味着:如果我使用ISO-8859-15对字符串进行编码,然后使用一些中文代码页对其进行解码,则会得到奇怪的结果。另一种选择是使用C#或Java之类的语言,其中所有内容都存储为Unicode,这意味着:不再有代码页,并且理论上您不会搞砸。我推荐乔尔的文章关于Unicode和字符集,但从本质上讲可以归结为:字符串如何在内部存储,而PHP的答案是“
Not in Unicode”,这意味着在处理字符串时必须非常小心和明确,以确保始终在输入,存储(数据库)和输出期间将字符串保持正确的编码,这很容易出错。



 类似资料:
  • 问题内容: 谁能告诉我异常产生的原因有哪些,与“ throws”子句不兼容 例如: 异常异常与Super.foo()中的throws子句不兼容 问题答案: 没有完整的代码示例,我只能猜测:您正在重写/实现子类中的方法,但是子类方法的异常规范与父类/接口方法的异常规范不兼容(即,不是其子集)? 如果声明基本方法根本不抛出异常,或者例如(这是您的方法的子类正在尝试在此处抛出),则可能发生这种情况。基类

  • 问题内容: 我正在尝试编写一个将通用列表转换为特定类型列表的函数。在下面找到代码 但是显示编译错误- 无法对类型参数T执行instanceof检查。请改用其擦除对象>,因为在运行时将删除更多的通用类型信息。 任何澄清或方法来获得预期的结果? 提前致谢。:) 问题答案: 您无法以这种方式这样做。幸运的是,您已经有一个参数,所以可以 如果属于类或子类,则将返回true 。 正如@ILMTitan指出的

  • 问题内容: 我见过很多人声称您应该在选择查询中专门为想要的每一列命名。 假设我仍然要使用所有列,为什么我不使用? 即使考虑问题* SQL查询-从视图选择或从视图*选择col1,col2,’colN,我也不认为这是完全相同的副本,因为我正从略有不同的观点着手解决这个问题。 我们的原则之一是在优化之前就不进行优化。考虑到这一点,在被证明是资源问题或架构几乎是固定的之前,似乎应该使用 首选的 方法。众所

  • 本文向大家介绍什么是双因素身份验证?相关面试题,主要包含被问及什么是双因素身份验证?时的应答技巧和注意事项,需要的朋友参考一下 双因素身份验证是在帐户登录过程中启用第二级身份验证。 因此,如果用户只需要输入用户名和密码,那么就被认为是单因素身份验证。

  • 问题内容: 我了解到Python 3不向后兼容。 使用旧版本的Python会不会影响很多应用程序? Python 3的开发人员怎么不认为使其向后兼容绝对必要? 问题答案: Python 3.0向后兼容吗?为什么? Python 3.0实现了许多非常有用的功能并打破了向后兼容性。它是故意这样做的,因此即使Python 2.x代码在Python 3.x下可能无法正常工作,也可以实现出色的功能。 因此,

  • 本文向大家介绍什么是不同类型的双因素身份认证?相关面试题,主要包含被问及什么是不同类型的双因素身份认证?时的应答技巧和注意事项,需要的朋友参考一下 执行双因素身份验证需要三种类型的凭据: 一件你知道的事情——比如密码、密码或屏幕锁定模式。 您拥有的物理凭证,如OTP、电话或ATM卡,换句话说,您在外部或第三方设备中拥有的任何类型的凭证。 您的物理身份–如语音认证或生物特征安全,如指纹或眼睛扫描仪。