在eclipse中,我有一个文件,其中写了一些地方:
onclick='obj1.help_open_new_window(fn1(), "/redir/url_name")'
并在eclipse编辑菜单 - >设置编码,我看到了:
现在我使用相同的对话框将编码更改为UTF-8,文本更改为:
onclick='obj1.help_open_new_window(fn1(),�"/redir/url_name")'
我所知道的是,如果没有发生这种情况,那么我的网站工作正常。为什么会发生这种情况,我该如何防止这种情况发生?
我对编码有一些了解:Â and nbsp mystery explained The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)但我仍然不明白为什么会发生这种情况。随意转到字节级别(如何存储文件)只是为了解释它。
更新 :这就是我所理解的:如果文件是在latin-1
中编码的,那么每个字符都是一个字节,也是如此。它应该是
hex(32)
。现在,当我将其转换为utf-8时,它仍然是hex(32)
,这绝对是。这让我相信在latin-1中,
不是
hex(32)
,而是两个字节的组合。怎么可能?
答案 0 :(得分:0)
逗号和引号之间的字符显示不是普通空格,而是其他一些空白字符,可能是着名的U+00A0 NO-BREAK SPACE。由于文件是用latin1编码的,因此字符作为字节\xA0
存储在磁盘上,而不是UTF-8中的有效字符。这意味着如果您使用UTF-8在编辑器中重新加载文件,您将看到通用替换字符�
。 (不间断空间的正确UTF-8编码为\xC2\xA0
。)
要解决问题,请用正常空格(U + 0020)替换不间断空格。没有理由在此上下文中使用不间断空格,即在程序文本中。