如何以正确的编码保存文件
how to save a file in the correct encoding?
保存文件时,Unicode 字符存储为字符编码
TMemoryStream *MS = new TMemoryStream;
TStringList *list = new TStringList;
list->Add(u"call=expose_full");
IdHTTP1->Post(u"URL", list, MS);
MS->SaveToFile("1.html");
例如"Atl\u00e9tico Rafaela Stats"
您正在使用Post()
版本,该版本将服务器的原始数据按原样写入TStream
。 TMemoryStream
只是一个内存缓冲区,它没有字符串、字符或编码的概念。 您正在完全按照服务器发送的方式保存 HTML 文件。无论是使用 UTF-8、UTF-16、Ansi 还是其他什么。
如果要以您选择的特定编码保存文件,则必须在下载后自己转换数据。例如,通过使用返回String
而不是填充TStream
的Post()
版本,则可以使用 TStringList
或 TStringString
或 System::Ioutils::TFile::WriteAllText()
方法,使用特定TEncoding
(如 TEncoding::UTF8
)将String
保存到文件中。
或者,如果服务器支持,则可以使用 TIdHTTP::Request::AcceptCharSet
属性指定愿意从服务器接受的字符集,然后服务器可以相应地对其响应进行编码。然后,您可以继续使用上面显示的原始代码。
相关文章:
- 保存文件并使控制台不关闭:Visual Studio 2019
- 将值更改为 c++ 的数组并保存文件
- 如何保存文件中的所有数据?C++
- 更改代码::块上的默认保存文件类型
- 使用setW()函数保存文件时,如何获取每个属性的值
- C 在使用UCS-2 LE编码的文件中搜索短语
- 尝试使用 ostream 保存文件内容时出错
- 如何使用3d的max 2016 SDK(C++)在插件中添加保存文件对话框?
- 如何在不保存文件的情况下制作打印屏幕并将其发送到FTP服务器?我的工作代码将文件保存到HDD
- 视频编写器功能不会使用 OpenCV-3.0.0 保存文件
- 使用fstream明确保存文件,而无需在C 中关闭文件
- 尝试使用Giflib编码GIF文件
- 位换档字符串以解码保存文件C
- QFile在程序退出时保存文件,根本不会保存~500MB文件
- 如何有效地解压缩霍夫曼编码的文件
- 保存文件或文件夹的时间戳
- Fstream不会保存文件中的最后一个单词,也不会从文件中读取
- CFileDialog保存文件的名称为空
- 如何以正确的编码保存文件
- 在动态分配的 char 数组中保存文件的类内容