我的位图文本文件中的所有字符都是中文
Posted
技术标签:
【中文标题】我的位图文本文件中的所有字符都是中文【英文标题】:All Characters in my Bitmap Textfile are in Chinese 【发布时间】:2021-04-15 04:15:25 【问题描述】:所以我目前正在开发一个从 .fbm 文件中提取材料的程序。在 ASCII fbm 文件中,要提取的数据如下所示:
/9j/4Sb7RXhpZgAATU0AKgAAAAgADAEAAAMAAAABEAAAAAEBAAMAAAABEAAAAAECAAMAAAADAAAAngEGAAMAAAABAAIAAAESAAMAAAABAAEAAAEVAAMAAAABAAMAAAEaAAUAAAABAAAApAEbAAUAAAABAAAArAEoAAMAAAABAAIAAAExAAIAAAAiAAAAtAEyAAIAAAAUAAAA1odpAAQAAAABAAAA7AAAASQACAAIAAgACvyAAAAnEAAK/IAAACcQQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpADIwMTk6MDc6MD
...
在 fbm 文件中有几组这些,每组都用引号和逗号分隔。现在,当我将文件中的第一个字符串转换为 jpg 时,使用以下命令:
//Convert ASCII data to binary
string asciiFileData = "";
StreamReader binaryDataReader = File.OpenText(Path.Combine(inputDirectory, convertedFBX + iterator.ToString() + ".txt"));
while (!binaryDataReader.EndOfStream)
var lineData = binaryDataReader.ReadLine();
if (String.IsNullOrEmpty(lineData)) continue;
asciiFileData += lineData;
string[] imageStrings = asciiFileData.Split(',');
List<byte[]> imageList = new List<byte[]>();
foreach (string imageString in imageStrings)
if(imageString.Length > 10)//A way of checking if there's actual data for the file to save
imageList.Add(Convert.FromBase64String(imageString.Trim().Replace(",", "").Replace("\"", "")));
//Save images
int iterator2 = 1;
foreach(byte[] image in imageList)
File.WriteAllBytes(Path.Combine(inputDirectory, convertedFBX + iterator.ToString() + iterator2++ + ".jpg"), image);
第一个字符串创建材料的正确 jpg。当我在一个文本文件中打开它时,它是通常奇怪的外星人字符(不是很肯定那些所谓的)。但是,第一个之后的jpgs无法打开。我为他们打开了文本文件,所有的字符都是中文的!为什么会发生这种情况?这是什么意思,应该是这样吗?提前感谢您的回答!
【问题讨论】:
devblogs.microsoft.com/oldnewthing/20140930-00/?p=43953。也就是说,不要强迫可怜的文本编辑器将二进制内容解释为某种编码的文本。 (半相关,你应该会看到joelonsoftware.com/articles/Unicode.html.)StreamReader
仅用于文本内容。对于二进制数据,您应该使用BinaryReader
。
这是很棒的信息,@GSerg!您介意将其放入答案中,以便我可以将此问题标记为已回答吗?
@silkfire 原来的内容是Base64,其实是对的。
"但是,第一个之后的 jpgs 无法打开。"在hex 编辑器 中打开它们并查看jpeg 文件的开头supposed 的样子。然后你就可以看到你的后续文件有什么问题了。
【参考方案1】:
该资源在 cmets 中被提及;但是,我的答案是在https://devblogs.microsoft.com/oldnewthing/20140930-00/?p=43953 找到的。本质上,当您尝试强制二进制内容成为某种特定的编码时,就会发生此错误。
【讨论】:
以上是关于我的位图文本文件中的所有字符都是中文的主要内容,如果未能解决你的问题,请参考以下文章