全部博文(5)
分类: LINUX
2016-05-06 11:06:14
这两天有同事遇到一些由于文件编码或字符编码导致打开页面的时候,luci报错的问题。一般情况下,这种问题的原因是文件自身的编码方式跟文件内容的编码不统一导致的。
举例:
1.比如一个文件是用的文件编码方式是ISO-8859-01,文件内容是UTF-8,那么就可能出现文件内容乱码。
解决办法:如果是在windows环境下,可以用记事本打开该文件,然后点击“另存为",选择文件的编码方式为UTF-8.
2.如果编辑文件的时候使用的是windows下的一些编辑工具,如dreamweaver,在编辑文件时,没一行后边都会加入一些特殊字符,如^M,这种符号在windows下用编辑器打开都是隐藏显示的,而在linux下用vim打开就有可能会看到.这种文件放到路由器里,luci由于不能解析这种特殊字符,就会提示文件有语法错误.
解决办法:
方法一.一种特别笨(其实也挺实用)的办法,就是用vim重新打开一个新文件,然后将原文件的内容粘贴到新打开的文件中即可.
方法二.linux下有个工具叫dos2unix,可以将windows下的这种文件转换成不带这种特殊字符的文件,直接执行dos2unix filename即可.
3.还有中文件乱码的问题是,对于html文件,可以设置charset等编码的地方,也应该跟文件内容和文件本身编码相同.
总之,为了避免麻烦,所有涉及编码的地方,最好统一设置为UTF-8.
下面是vim的几种编码设置的说明:
vim 编码方式的设置
和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括UCS-2、UTF-8 等流行的 Unicode 编码方式。然而不幸的是,和很多来自 Linux 世界的软件一样,这需要你自己动手设置。
Vim 有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding (这些选项可能的取值请参考 Vim 在线帮助 :help encoding-names),它们的意义如下:
* encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。默认是根据你的locale选择.用户手册上建议只在 .vimrc 中改变它的值,事实上似乎也只有在.vimrc 中改变它的值才有意义。你可以用另外一种编码来编辑和保存文件,如你的vim的encoding为utf-8,所编辑的文件采用cp936编码,vim会 自动将读入的文件转成utf-8(vim的能读懂的方式),而当你写入文件时,又会自动转回成cp936(文件的保存编码).
* fileencoding: Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。
* fileencodings: Vim自动探测fileencoding的顺序列表,启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。
* termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。如果vim所在的term与vim编码相同,则无需设置。如其不然,你可以用vim的termencoding选项将自动转换成term 的编码.这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的Vim 而言就是 Windows 控制台的代码页,并且通常我们不需要改变它。