我已经开发了1年的环境应用程序(apache,php,html5和javascript)。我在此之前并不关心编码问题。它就像魔术一样。我只是设置了mysql连接。配置文件为UTF-8而忘记了
但是在我的经验增长之后,我遇到了需要完全理解在这种环境下如何解决编码问题的情况。当我得到一些东西时,我会想念其他人。所以我无法全面了解。
要明确:
如何完成转换以及我需要关注的可能问题是什么。
答案 0 :(得分:5)
它们不是任意的,它们是你告诉它们的。所以一般来说,你可以把所有东西都改成UTF-8,你就没事了。
Javascript字符串内部只有UTF-16。您发送的JS文件可以是UTF-8。如果您告诉浏览器响应的编码,浏览器将能够转换为所需的编码。只有当您指定的编码与实际发送的编码不同时才会出现问题。
为什么选择UTF-8?
答案 1 :(得分:4)
这个问题只存在于两个系统之间的边界上。在一个系统(PHP,数据库,单独的Javascript等)中,有明确的方法来处理编码,并且通常在那里几乎没有摩擦。问题通常是将一大块二进制数据从一个系统传输到另一个系统,比如PHP传输到数据库,而在随附的元数据中正确指定该blob在中的编码。
系统之间的不同接口具有指定所需元数据的不同方式。 PHP和数据库之间的接口允许指定连接编码,这使得数据库“理解”PHP正在使用的编码以及它期望的编码。在Web服务器/ PHP和浏览器之间有HTTP标头和/或HTML元标记,允许指定此元数据。
一个系统总是要屈服。任何一个系统都以特定的编码发送数据,告诉收件人这是什么编码,收件人必须处理它;或者收件人可以预先指定所需的编码,发件人必须在发送之前将其转换为该编码。
accept-charset
属性发送任何数据,或者浏览器从收到的内容中推断出数据,服务器还会声明它所期望的编码