理解文件编码

时间:2012-06-13 10:11:49

标签: encoding utf-8 character-encoding latin1

在eclipse中,我有一个文件,其中写了一些地方:

onclick='obj1.help_open_new_window(fn1(), "/redir/url_name")'

并在eclipse编辑菜单 - >设置编码,我看到了:

enter image description here

现在我使用相同的对话框将编码更改为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),而是两个字节的组合。怎么可能?

1 个答案:

答案 0 :(得分:0)

逗号和引号之间的字符显示不是普通空格,而是其他一些空白字符,可能是着名的U+00A0 NO-BREAK SPACE。由于文件是用latin1编码的,因此字符作为字节\xA0存储在磁盘上,而不是UTF-8中的有效字符。这意味着如果您使用UTF-8在编辑器中重新加载文件,您将看到通用替换字符。 (不间断空间的正确UTF-8编码为\xC2\xA0。)

要解决问题,请用正常空格(U + 0020)替换不间断空格。没有理由在此上下文中使用不间断空格,即在程序文本中。