当前位置: 首页 > news >正文

网站建设的客户在哪里建设局

网站建设的客户在哪里,建设局,做酒店网站多少钱,和网站设计人员谈价要注意什么上当了。 最近程序要和 Jscript / activex 脚本通信。 ActiveX这玩意,导出文件,如果是UTF8导出,会出现莫名异常:写一半直接退出。或许是系统语言设置的问题。 但是切换为utf16(unicode)导出就没有问题&a…

上当了。

最近程序要和 Jscript / activex 脚本通信。

ActiveX这玩意,导出文件,如果是UTF8导出,会出现莫名异常:写一半直接退出。或许是系统语言设置的问题。

但是切换为utf16(unicode)导出就没有问题:

OpenTextFile method (Visual Basic for Applications) | Microsoft Learn

var fso = new ActiveXObject("Scripting.FileSystemObject");
var file = fso.CreateTextFile("", true, true );

然而蛋疼还没有完。在C++程序中,UTF8文件直接用 stf::ifstream 读进来就可以。

std::ifstream file(L"");if (file.is_open()) {std::string line;while (std::getline(file, line)) {...}}file.close();

但 UTF16 却不能直接用 std::wifstream 读取。 StackOverflow 上有人说,需要告知 std::wifstream 编码格式。 c++ 标准库才会跳过bom、进行逐行解码。

有人整理如下:(18)用std::wifstream读取Unicode文本-CSDN博客

结果第二天就出现问题。一些特殊表情符号直接空白(比如:🍓)。或许是,这个办法不支持UTF16的surrogate pair,四个字节的符号。

我勒个去,编码直接变没了!

震惊!

立马鞭策chatgpt,让他写个直接读到 TCHAR* 数组里的替代办法,一点问题没有!c++还真是蛋疼啊~

TCHAR* ReadUTF16File(const TCHAR* filePath) {HANDLE hFile = CreateFile(filePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);if (hFile == INVALID_HANDLE_VALUE) {// Handle file opening errorreturn NULL;}DWORD fileSize = GetFileSize(hFile, NULL);TCHAR* buffer = new TCHAR[fileSize / sizeof(TCHAR) + 1];DWORD bytesRead = 0;ReadFile(hFile, buffer, fileSize, &bytesRead, NULL);buffer[fileSize / sizeof(TCHAR)] = '\0';CloseHandle(hFile);return buffer;
}
std::vector<std::wstring> _args;
QkString ln;if(StrCmpN(_args[i].c_str(), L"-loadArgsW", 10)==0) {TCHAR* all = ReadUTF16File(_args[i].c_str()+11)+1;TCHAR* current = all;TCHAR* next = nullptr;while ((next = _tcschr(current, _T('\n'))) != nullptr) {// Process the line from current to nextln.Empty();ln.Append(current, next-current);//*next = _T('\0');//_tprintf(_T("%s\n"), current);*next = _T('\n'); // Restore the newline charactercurrent = next + 1; // Move to the character after the newlineln.Trim();_args.push_back(ln.GetData());}if (*current != _T('\0')) {//_tprintf(_T("%s\n"), current);ln = current;ln.Trim();_args.push_back(ln.GetData());}}

这说明,程序里面 TCHAR* 字符串就是UTF16编码,或者说是 IE / JScript / ActiveX 认可的 unicode 编码模式,不需要 std::wifstream 多此一举地解码,直接读取到内存即可。

http://www.yayakq.cn/news/829287/

相关文章:

  • 国内最大的摄影网站asp+sql server典型网站建设案例(源码)3
  • 建网站的方法品牌建设费用包括哪些
  • 网站怎么排版电子商务网站建设价格
  • php网站的开发背景网站模板编辑工具
  • 长春网站制作公司哪个好金融网站的设计
  • 优秀网站制作实例展示奉贤网站建设网站制作
  • 网站的管理包括江门网站上排名
  • 网站建设制度制定情况网页制作与网站建设ppt
  • 公司中英文网站常用的网站开发
  • 推广网站的作用一般网站的跳出率
  • 淄博网站开发php制作网页教程
  • 做外贸电商网站成都家装公司
  • 沈阳企业建站系统模板小企业网站建设哪家便宜
  • 鄠邑建站 网站建设分析无线传感网络的体系架构
  • 争对银行排队做一网站最好的县级代理商品
  • 大连网站 设计公司网络营销案例分析试题
  • 做家务的男人网站wordpress付费预约插件
  • 贵州省住房与城乡建设厅网站jsp网站项目
  • 厦门网络建站公司百度建一个网站多少钱
  • 新网网站制作站长统计
  • 阿里云服务器搭建多个网站萍乡建设网站
  • 淘宝优惠劵网站建设学校网站建设可行性分析
  • 狗贩子怎么做网站卖狗网页制作素材搜索途径有哪些
  • 做ppt兼职网站有哪些有没有什么做h5的网站
  • 足球比分网站建设东莞技术支持网站建设专家
  • 网站建设需要会代码吗项目建设环境影响登记表在哪个网站
  • 无锡网站制作网站建设居民瑞app下载
  • 寿光shengkun网站建设网络推广哪个平台最好
  • 邱县做网站wordpress怎么装主题
  • 石家庄 网站建设微信小程序怎么批量删除