伤心的笔 发表于 2013-10-25 16:10:57

lijianwen 发表于 2013-10-18 15:12
看了你的回复,我专门测试了一下,电视显示还是乱码。
有时候下载到的字幕,记事本打开乱码,但srtedit ...

srtedit打开就不是乱码的字幕,其实没有问题(这样的字幕也能被Word打开),乱码是记事本的问题(ANSI编码有好多种)

而本帖的字幕才是真正有问题的字幕。

伤心的笔 发表于 2013-11-9 11:05:32

基本上可以得出这样一个结论:该字幕中的部分文字信息已经在Unicode->Big5过程中丢失。无法还原。
稍后将解释。

伤心的笔 发表于 2013-11-9 11:21:16

本帖最后由 伤心的笔 于 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啊,趕快統一江湖吧!

lijianwen 发表于 2013-11-9 12:14:14

伤心的笔 发表于 2013-11-9 11:21
不同的字符集所包含的字符不同。如平方的符号2,在Unicode字符集中是存在的,在ANSI字符集中就不存在 ...

非常合理的解释,版主应该加分。

IsaacZ 发表于 2013-11-11 16:40:52

还是那句话,既然大部分的文字可以通过内码转换正确地识别出来,说明内码转换的思路是正确的。错误或残缺的内容应该是找不回来了。
页: 1 [2]
查看完整版本: 神一样的字幕该如何处理