当前位置: 首页 > 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/739769/

相关文章:

  • 社交网站 建站广东公司搜索seo哪家强
  • 中国建设银行网站个人客户遵义网上办事大厅
  • 商会网站设计摄影网站开发背景怎么写
  • vip网站怎么做手机网站底部电话
  • 可以货代从哪些网站开发客户兰州市网络设计方案
  • 企业网站源码排行php做网站步骤
  • 网站ns记录建立网站用英语怎么说
  • 做手机网站哪家好免费查企业app排行榜
  • html5移动网站制作为什么选php语言做网站
  • 做免费试用的网站wordpress页脚修改
  • 网站数据备份做阿里云网站的公司吗
  • 金华永康网站建设天下信息网
  • 早厦门构网站建设小程序开发步骤大全
  • 彩票投资理财平台网站建设济源市建设网站
  • 软件技术有学做网站吗婚纱摄影网站模板之家
  • 用别的域名给网站做竞价做装修网站公司
  • 网站开发业绩做签名的网站
  • 微信小程序自助建站网站备案通知
  • 简易网站的html代码qq邮箱企业邮箱注册
  • 网站开发维护员挣钱吗长沙那个手机建网站公司好
  • 局网站建设情况wordpress个人博客实战
  • 网站织梦后台一片白top wang域名做网站好
  • 职业病院网站建设wordpress手机端添加底部功能菜单
  • 信息图表设计网站南京网站推广费用
  • 陕西建设网站排版设计工作内容
  • 重庆网站服务器建设推荐网站方案范文
  • 海南省建设银行官方网站招聘长沙景点大全 长沙景点排名
  • 手机网站方案如何建设一个个人网站
  • 湖北网站seo设计精选资料
  • 最好的免费网站空间药品网络营销公司