黑马程序员技术交流社区

标题: 用字符流拷贝MP3,文件大小变小了. [打印本页]

作者: 郑飞    时间: 2014-10-29 06:57
标题: 用字符流拷贝MP3,文件大小变小了.
我知道不能用字符流,但是我试了下,复制完,小了好多,就是想知道,字符和字节转换的时候,文件大小是怎么丢失的;
或者谁解释下不能用字符流拷贝MP3的真正原因;

作者: 郑飞    时间: 2014-10-29 07:21
是不是因为 字符流把MP3转字符的时候 很多时候在编码表找不到对应的字符 然后用了某几个相同的乱码字符来代表 然后再读出来 就造成数据的改变??
作者: 不轻易    时间: 2014-10-29 07:46
原因要看看具体变小了多少吧~~
作者: 郑飞    时间: 2014-10-29 07:48
不轻易 发表于 2014-10-29 07:46
原因要看看具体变小了多少吧~~

这和变小多少没什么关系吧 我想知道它是怎么变小的
后来试了 用转换流套上字符流 拷贝 unicode 差异最小 utf-8差很大
作者: renchiyao    时间: 2014-10-29 08:05
大神,变小的MP3还能播放吗?
作者: 郑飞    时间: 2014-10-29 08:53
renchiyao 发表于 2014-10-29 08:05
大神,变小的MP3还能播放吗?

肯定不能啊 通过进出编码和解码 数破坏了 好像视频中细讲当中原理 可惜了
作者: cxdzh    时间: 2014-10-29 13:40
郑飞 发表于 2014-10-29 08:53
肯定不能啊 通过进出编码和解码 数破坏了 好像视频中细讲当中原理 可惜了 ...

编码表里有一集讲到,解码时识别不了的编码都会转换成同一组字节码,
作者: 郑飞    时间: 2014-10-30 00:49
cxdzh 发表于 2014-10-29 13:40
编码表里有一集讲到,解码时识别不了的编码都会转换成同一组字节码,

好像有点印象 回头再看看去
作者: 踏云    时间: 2014-10-30 00:54
jvm中默认的解码的码表是gbk,gbk中中文是两个字节,英文是一个字节如果是未知字符则最终会匹配一个一个字节的字符,也就是码表中找不到对应字符的就会转为一个字节,每一个文件都有特定的解码方式,所以,当传入了两个字节的字符,字符找不到对应的gbk码表字符时,就会转为一个字节的未知字符,所以就缩小了
作者: 郑飞    时间: 2014-10-30 01:02
踏云 发表于 2014-10-30 00:54
jvm中默认的解码的码表是gbk,gbk中中文是两个字节,英文是一个字节如果是未知字符则最终会匹配一个一个字 ...

嗯 编码问题迟早得弄个明白 谢谢你的解答





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2