我的位图文本文件中的所有字符都是中文
All Characters in my Bitmap Textfile are in Chinese
所以我目前正在开发一个程序,该程序将从 .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。当我在文本文件中打开它时,它通常是奇怪的外星字符(不太肯定这些字符的名称)。但是,第一个之后的jpg无法打开。我给他们打开文本文件,全是汉字!到底为什么会这样?这是什么意思,应该是这样吗?预先感谢您的回答!
该资源在评论中被提及;但是,我的答案是在 https://devblogs.microsoft.com/oldnewthing/20140930-00/?p=43953 上找到的。从本质上讲,当您尝试将二进制内容强制为某种特定的编码时,就会发生此错误。
所以我目前正在开发一个程序,该程序将从 .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。当我在文本文件中打开它时,它通常是奇怪的外星字符(不太肯定这些字符的名称)。但是,第一个之后的jpg无法打开。我给他们打开文本文件,全是汉字!到底为什么会这样?这是什么意思,应该是这样吗?预先感谢您的回答!
该资源在评论中被提及;但是,我的答案是在 https://devblogs.microsoft.com/oldnewthing/20140930-00/?p=43953 上找到的。从本质上讲,当您尝试将二进制内容强制为某种特定的编码时,就会发生此错误。