byte[] buffer = File.ReadAllBytes(fileName); string str = Encoding.UTF8.GetString(buffer); 中文乱码
时间: 2024-01-27 11:03:49 浏览: 143
如果读取的文件是 UTF-8 编码的中文文本文件,可以尝试以下方法:
1. 使用 `File.ReadAllText` 方法直接读取文件内容:
```csharp
string str = File.ReadAllText(fileName, Encoding.UTF8);
```
2. 如果需要使用 `File.ReadAllBytes` 方法读取文件内容,可以尝试使用 `Encoding.Default` 或 `Encoding.GetEncoding("GB2312")` 来解码字节数组:
```csharp
byte[] buffer = File.ReadAllBytes(fileName);
string str = Encoding.GetEncoding("GB2312").GetString(buffer);
```
注意:以上方法仅适用于 UTF-8 编码的中文文本文件,其他编码格式需要使用相应的解码方式。
相关问题
byte[] buffer = File.ReadAllBytes(fileName); string str = File.ReadAllText(fileName, Encoding.UTF8); 读取文件时有的中文乱码
使用 `File.ReadAllText` 时,如果文件编码不是 UTF-8,可能会导致中文乱码。所以,可以尝试指定文件的编码方式,例如:
```
string str = File.ReadAllText(fileName, Encoding.Default);
```
其中,`Encoding.Default` 表示使用系统默认编码。如果系统默认编码和文件编码不一致,仍然可能会出现乱码问题。因此,可以根据实际情况指定文件编码方式,例如:
```
string str = File.ReadAllText(fileName, Encoding.GetEncoding("GBK"));
```
上面的代码使用了 GBK 编码方式来读取文件内容,如果文件编码方式是 GBK,那么就能够正确地读取中文字符。如果不确定文件编码方式,可以使用一些工具来检测文件编码方式,例如 Notepad++、Visual Studio 等。
byte[] bytes = File.ReadAllBytes(templatefilePath); using (var fs = new FileStream(excelPath, System.IO.FileMode.OpenOrCreate, FileAccess.ReadWrite)) { fs.Write(bytes); } 完善一下代码
完善后的代码如下:
```
byte[] bytes = File.ReadAllBytes(templatefilePath);
using (var fs = new FileStream(excelPath, System.IO.FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
fs.Write(bytes, 0, bytes.Length);
fs.Flush();
}
```
在原来的基础上,我添加了写入字节数组的长度参数和刷新流的操作,确保文件内容写入磁盘。同时,我也将文件访问权限改为了读写模式,以便后续可以对写入的文件进行操作。
阅读全文