我在将一些unicode数据上传到数据库时发现了一些问题。当内容通过textarea上传时,会以क
格式存储,但是当您亲自键入或粘贴unicode并将其硬编码到php中时,它将以à¤
格式存储。但对于两者而言,unicode字符是相同的क
。
现在请告诉我unicode字符的不同格式之间的区别。以及它们如何影响发展。这些格式必须有一些限制。
答案 0 :(得分:2)
<强>&安培; #2325; 是markup used in HTML to represent a Unicode character
如果您在php源文件中硬编码,请确保使用编辑器打开它,正确显示包含unicode字符的文本文件。
http://www.joelonsoftware.com/articles/Unicode.html是了解unicode基础知识的好地方。
क的UTF-8编码具有字节序列 E0 A4
现在,如果有人将此解释为8位Latin encoding,则会认为它是两个字符
您将在上面的链接表中看到E0是à而A4是¤
答案 1 :(得分:2)
当通过textarea上传内容时,将以क格式存储,
表单不应以字符引用(&#...;
)格式提交内容。
但实际上,它们在大多数当前的浏览器中都有...但只有在他们无法以任何其他方式提交相关字符时才会这样做。在这种情况下,您无法判断用户最初是键入क
还是क
,这是一种有损编码。
要避免这种情况,请确保在支持所有可能的Unicode字符的字符集中为页面提供服务。实际上,这意味着始终使用UTF-8,并使用标头中的Content-Type: text/html;charset=utf-8
标头和/或<meta http-equiv="Content=Type" content="text/html;charset=utf-8"/>
元素为您的网页提供服务。然后,您将以简单,无损的UTF-8格式获取所有字符。