看了你的回复,我专门测试了一下,电视显示还是乱码。
有时候下载到的字幕,记事本打开乱码,但srtedit ...
srtedit打开就不是乱码的字幕,其实没有问题(这样的字幕也能被Word打开),乱码是记事本的问题(ANSI编码有好多种)
而本帖的字幕才是真正有问题的字幕。 基本上可以得出这样一个结论:该字幕中的部分文字信息已经在Unicode->Big5过程中丢失。无法还原。
稍后将解释。 本帖最后由 伤心的笔 于 2013-11-9 11:52 编辑
不同的字符集所包含的字符不同。如平方的符号²,在Unicode字符集中是存在的,在ANSI字符集中就不存在了。
打开记事本,复制下面这行文字:
a²保存,编码保持默认的ANSI编码。
会发现,a²变成了a2
也就是说,系统会自动地把不存在的字符,转换为最相近的字符。这里的²->2对应关系是人为规定的。
要想在txt文件中储存这行字,编码需要选择Unicode,或者其他几个选项(其实也是Unicode的一种)
我们知道,简体中文系统的ANSI编码是GBK字符集(或者可以近似看做GBK字符集)。GBK字符集包括英文数字、西方的一些字母、东亚其他国家的一些文字、大多数简体字和大多数繁体字(假繁体。因为繁体字中与简体字字形一致的字会合并成一个字,按照大陆的习惯来写)、特殊符号(不包括²等等)等等。因此,在简体系统中,用默认的GBK字符集保存繁体字是没有问题的(虽然不是一个好做法)。
繁体系统就不一样了,ANSI编码默认是Big5字符集。Big5字符集并不包括一些新增的简体字。如果我们在繁体系统下保存一些简体字的话,就会产生和保存a²一样的悲剧。“历史”会变成“歷史”。这还是不错的。有些人为没有规定好的字之间的对应关系,系统就只能“乱”保存了。因此,部分信息会丢失,而大多数文字会被系统转换为繁体字,以便保存于Big5编码的文本文件中。
因此,我推测该字幕保存的时候,错误地选择了Big5编码,导致信息的丢失。(简体电脑不能自动识别Big5编码,所以会全篇乱码。)10楼的结果就是该字幕中仅剩的信息了,其余信息是无法准确恢复的,就像这个“a2”中的“2”可能会有多种含义一样(“2”或“²”),只知道一个“a2”是无法准确还原成“a²”的。
然而該字幕的情況遠比上述過程要複雜。因為該字幕中,一部分簡體字被轉換成了繁體字保留了下來。而如果只是直接在繁體作業系統下保存的話,所有的簡體字都會變成??。因此,該字幕應該經歷了更多的內碼轉換過程。
往服務器中上傳文字文件時,默認不是以二進制方式上傳的。而是以字符串的形式。因此,服務器端如果是UTF-8編碼的話,上傳中文一般是亂碼的(本人沒有豐富的建站經驗,對這個問題不太明白,IsaacZ應該明白吧)。但也許服務器端使用ANSI編碼。也許是Unicode編碼(UTF-16 BOM)。(一般是以UTF-8編碼為主)這個過程可能會導致亂碼。還有其他奇奇怪怪的問題,也會導致亂碼。
字符編碼的不統一,又一次造成了不便。ANSI,你們這個家族早就該退出了。記事本啊,什麼時候能夠默認保存為Unicode編碼呢?Unicode或者UTF-8啊,趕快統一江湖吧!
伤心的笔 发表于 2013-11-9 11:21
不同的字符集所包含的字符不同。如平方的符号2,在Unicode字符集中是存在的,在ANSI字符集中就不存在 ...
非常合理的解释,版主应该加分。 还是那句话,既然大部分的文字可以通过内码转换正确地识别出来,说明内码转换的思路是正确的。错误或残缺的内容应该是找不回来了。
页:
1
[2]