Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UTF-8编码转换控制字符>;127到?_C# - Fatal编程技术网

C# UTF-8编码转换控制字符>;127到?

C# UTF-8编码转换控制字符>;127到?,c#,C#,我有一个包含字母、数字、特殊字符和控制字符的二进制文件,如下所示 ESC!€STANDARD + UNDERLINE ESC!COMPRESSED + UNDERLINE ESC!ˆSTANDARD + EMPHASIZED + UNDERLINE 我正在执行以下操作 string file = FileOpenDlg.FileName; System.IO.StreamReader myFile = new System.IO.StreamReader(file); string data

我有一个包含字母、数字、特殊字符和控制字符的二进制文件,如下所示

ESC!€STANDARD + UNDERLINE
ESC!COMPRESSED + UNDERLINE
ESC!ˆSTANDARD + EMPHASIZED + UNDERLINE
我正在执行以下操作

string file = FileOpenDlg.FileName;
System.IO.StreamReader myFile = new System.IO.StreamReader(file);
string data = myFile.ReadToEnd();
byte[] sendCmd = Encoding.UTF8.GetBytes(data);
这将替换十六进制值大于80到?的€、ˆ等?。当我把这个发给打印机时,它给出了错误的答案


如何处理这些字符?感谢及时的帮助

二进制文件中的文本编码是什么?当您读取文件时,代码中的“data”变量是否包含具有有效和正确字符的字符串(在VS debugger中可读)?可能打印机需要ANSI代码,因此您应该尝试使用
编码.Default.GetBytes()
。或者,如果打印机的代码页与操作系统的代码页不匹配,则可能需要为特定代码页创建编码。有一个带有字母的二进制文件。如果它是二进制的,则读取并将其视为
字节[]
。如果是字母,告诉流读取器它使用的是什么编码。打印机需要ANSI文件格式。我尝试使用encoding.Default.Getbytes(),即使这样也会将字符€,ˆ替换为?。