在做Android多媒体播放器的时候,加入了同步显示歌词的功能。由于歌词是直接在网上down的,并且是中文的。所以编码格式为GBK,GB18030等中文字符编码格式。在Ubuntu下显示的是乱码.将这些LRC push进sd卡进行解析时,也会出现乱码。
以下是解决方法:
1.配置gedit的编码列表,下面摘自ubuntu官网上的一篇文章:
缺省配置下,用 Ubuntu 的文本编辑器(gedit)打开 GB18030/GBK/GB2312 等类型的中文编码文本文件时,将会出现乱码。
出现这种情况的原因是,gedit 使用一个编码匹配列表,只有在这个列表中的编码才会进行匹配,不在这个列表中的编码将显示为乱码。您要做的就是将 GB18030 加入这个匹配列表。
命令行方式,适用于所有 Ubuntu 用户。复制以下命令到终端中,然后回车即可:
gconftool-2 --set --type=list --list-type=string /apps/gedit-2/preferences/encodings/auto_detected "[UTF-8,CURRENT,GB18030,BIG5-HKSCS,UTF-16]"
图形化方式,适用于 Ubuntu 用户,而不适用于 KUbuntu/XUbuntu 用户。您可以遵循以下步骤,使您的 gedit 正确显示中文编码文件。
按下 Alt-F2,打开“运行应用程序”对话框。 在文本框中键入“gconf-editor”,并按下回车键,打开“配置编辑器”。 展开左边的树节点,找到 /apps/gedit-2/preferences/encodings 节点并单击它。 双击右边的 auto_detected 键,打开“编辑键”对话框。 单击列表右边的“添加”按钮,输入“GB18030”,单击确定按钮。 列表的最底部新增加了一个“GB18030”。单击选中它,并单击右边的 “向上” 按钮直到 “GB18030” 位于列表的顶部为止。 单击确定按钮,关闭配置编辑器。现在,您的 gedit 应该能够顺利打开 GB18030 编码的文本文件了。
2.将网上下载下来的歌词,一般是以asp格式结尾的。将其以lrc为后缀,歌曲名称为前缀重新命名。然后以UTF-8编码,行尾为Unix/Linux格式存储。(这点很重要,因为android的默认编码是UTF-8).
这样在android shell中cat file时就会发现全部是中文了,解析的时候就不会出现乱码了。