我需要处理保存为bsae64strings的CSV文件。我不知道它们是用什么格式创建的(通常是ANSI或UTF-8)。我一直在努力实现任何有用的东西,但是,当我在ANSI文件中保存的CSV文件上测试代码时,仍然收到混乱的字符。要读取的代码只有两层:
byte[] dataToDecode = Convert.FromBase64String(base64Content);
string csvContentInUTF8 = Encoding.UTF8.GetString(dataToDecode2);
我无权访问保存文件的代码。
输入CSV中的示例行:
;;;superÆ/æØ/ø甚至Å/åTopic ;; John; Doe ;;;; john@doe.com ;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;
解码后我会得到什么(第二行代码)
;;; super././.oraz //主题;; John; Doe ;;;; john@doe.com ;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;
在this question之后,我尝试将代码更改为斯堪的纳维亚编码读取,因此:
string csvContentInUTF8x = Encoding.GetEncoding("iso-8859-1").GetString(dataToDecode);
输出为:
;;;super�/��/�oraz�/�主题;; John; Doe ;;;; john@doe.com ;;;;;; ;;;;;;;;;;;;;;;;;
对于Encoding,它看起来完全一样。默认
答案 0 :(得分:0)
如果您输入的内容正确,则说明在 将其写入csv文件之前,文本已损坏。
现在... Encoding.GetEncoding("iso-8859-1")
是完全相同的编码,不进行任何重新映射。它的256个字符被1:1映射到unicode的前256个(0-255)字符。
;;;super�/� �/� oraz �/� Topic;;John;Doe;;;;john@doe.com
您看到�
重复了六次吗?通常每次都应该不同,因为您想要六个不同的字符(Æ/æ,Ø/ø,Å/å)。但是在这里它们总是一样的。这是因为在UTF-8 �
中是无法替换字符时使用的Unicode REPLACEMENT CHARACTER �
。因此,您的dataToDecode
中已经存在该错误。