第一个文件内容是编码为A的字符串Str
第二个文件内容是编码为B的字符串Str
那么
str1=读第一个文件内容
str2=读第二个文件内容
那么str1等不等于str2呢?
我的理解读到内存中都是二进制...但是我不知道不同编码的文件转换成二进制是不是一样..
按理说应该不等于吧
那如果写到内存是不同的话那么平时自定义一个string字符串那肯定也有默认的编码啦,那好像平常也没有这个编码啊
文件是不同的.读到内存中各自编码后的结果是相同的.
平常是因为用的系统默认编码.一般情况下自身运行没问题.在对外交互时经常会出编码不同问题.
也就是说无论是什么编码,到内存中是一样的二进制,而到文件中就因为不同的编码表现从而表现出不同的形式,也就是说c#读取文件的字符串到内存自己先解码?
@猝不及防: 错.
误区在于不理解编码的意义.缺少:字符串的机内表示方式 的知识点.
1.我们要表达一个字符串,这个字符串是:"Str"
2.我们需要将"Str"在机器内表示出来
3.我们将字符串"Str"使用ascii编码转为了二进制数组[1101,1101,1101]
字符串"Str"从头到尾都是不存在的.只是我们人为的赋予二进制数组[1101,1101,1101]是"Str"
内存里文件里都是二进制,都是编码后的.程序里的字符串一定是有特定的编码格式的.
@吴瑞祥: 谢谢大哥,懂了
C# 一般默认编码是 UTF-8
不同的,编码过程是对原文件的内容进行增删改除的过程,不同的编码方式其过程也不同,所以如果只是读取文件为二进制,而不在此前先进行解码的话,内容是不会变成相同内容的。
要想的到原先的文件,必须先对编码后的文件进行其相对应的解码,这样才能得到原文件。
只有对两个编码文件都进行相对应的解码,然后在引用文件内容才能得到相同的二进制文件。
那么c#读这两个文件的时候是否进行了自动解码呢?
@猝不及防: C#中有特定的字符串表示符号,在写代码时要根据特定的要求使用不同的定义方法,在C#读取过程会根据不同的定义符号来读取内容,如果读取时文件中的内容与代码中定义的不是同一类的数据时可能会报错