我的问题是:
我使用ASP.NET生成并上传SQL文件,但是在将文件保存到FTP服务器之后,像ü这样的字符会更改为& uul;,ø到ø等等......我怎么能防止这种情况发生?我不希望使用ASCII代码格式化文件,但使用UTF-8。
生成并上传文件的代码如下所示:
//request = the object to be made an request out of.
Stream requestStream = request.GetReguestStream();
var encoding = new UTF8Encoding();
//fileContent is the string to be saved in the file
byte[] buffer = encoding.GetBytes(fileContent);
requestStream.Write(buffer, 0, buffer.Length);
requestStream.Close();
正如您所看到的,我已尝试使用System.Text.UTF8Encoding
,但它不起作用。
答案 0 :(得分:10)
请记住,对于流,您几乎总是可以根据需要包装流。如果要编写UTF-8编码的内容,请使用正确的编码将请求流包装在StreamWriter
中:
using (Stream requestStream = request.GetRequestStream())
using (StreamWriter writer = new StreamWriter(requestStream, Encoding.UTF8)) {
writer.Write(fileContent);
}
由于您说您要上传到网络服务,请务必同时设置内容编码。由于您尚未发布request
对象的来源,我认为这是正常的HttpWebRequest。
使用HttpWebRequest,您可以使用ContentType
属性告诉服务器内容编码是什么。
request.ContentType = "text/plain;charset=utf-8";
正如其他人所提到的,FTP传输本身也可能会破坏它。如果可以,请确保它以二进制模式而非ASCII模式传输。
答案 1 :(得分:1)
将它放入调试中并查看在编码后放入'缓冲区'的内容。调用GetBytes()。这将验证它是否是导致它的rx端。