TC官方合作论坛

 找回密码
 立即注册
查看: 2889|回复: 10

[插件] c/c++写的dll 转utf8文本到unicode,本人爱分享

  [复制链接]
发表于 2015-12-12 00:45:28 | 显示全部楼层 |阅读模式
本帖最后由 jzlhll 于 2015-12-12 01:05 编辑

还是写写心路历程吧。
大家都知道TC只能读取unicode编码的文本,我想实现读取utf8,思路如下:
1. 刚开始用TC每读一行,发现中间只有中文是乱码,英文(ascii玛)是正确的,于是我想是不是将错误的中文打印出2进制来再转一下编码就ok了呢?
2. 结果验证了很久,才发现,读取的一行,中文已经被错误的转成unicode了(帮助文档中有描述),导致了编码的错乱。(有兴趣的需要去了解unicode和utf8文件的编码原理);

3. 上面的路死了,那么,我想找dll或者脚本来处理,论坛上几乎没有资源,有资源的,又发现不对劲,没有描述,脚本dll工具检测提示也没有参数返回值(如图dll插件)。于是我就想自己实现。

4. 易语言?c++?如何编写?教程也少,多的都是易语言。本人比较熟悉visual studio,于是就想用c++/c实现。正好发现帮助文档中有一个vs2010版的TCdllcallModule hello。

5. 导入这个项目,直接可以测试,确实可以用;这里也有陷阱,首先WINAPI这个方法的返回值建议是long,并且输入的参数,不能是c o n s t!,否则报错。
   因此我就直接套用了hello()的参数形式。

6. 然后我就研究utf-8 unicode的编码。写了1.5天。

目前实现了utf8->unicode的转码。
原型:
  1. long WINAPI convertUtf8ToUnicode(char *filename, char * filenamewrite, int isLE)
复制代码
说明:
转化utf8到unicode,utf8文件可以带BOM或无,unicode可以指定LE/BE
filename 是read的文件
filenamewrite 是write的文件,注意该文件如果存在会被删除
isLE 需要保存的是LE还是BE(TC读取的是LE,因此传入1)
return -1表示读取的文件无法打开,-2表示写入的文件无法修改,0表示正常

TC使用:
  1. dllcall(getrcpath("rc:TCdllcallModule.dll"),"long","convertUtf8ToUnicode","char *","D:\\a.log","char *","D:\\converted.log", "int", 1)
复制代码
实测:
    由于基本是C代码编写的,效率非常高,写了测试时间代码,转换100M文件只需要1s左右。
并且本人指针管理的较好,不用担心出错(当然如果有错请告知我,给我,你的原文本,我来分析分析也提高我的dll,然后继续共享给大家)。
如果有疑问请回帖。
计划:
  我会再不久的将来有时间搞一下其他的编码,比如ANSI, GBK,或者搞一下unicode转其他。
(等级太低没法设置隐藏回复,那么,看着好的请一定回复下,我才有动力继续写.thanks.)






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 3威望 +65 金币 +65 收起 理由
高宇丶 + 5 + 5 神马都是浮云
Abin + 50 + 50 原创的东西,支持下,赞!!!.
言术 + 10 + 10 支持一下

查看全部评分

回复

使用道具 举报

发表于 2015-12-12 09:46:33 | 显示全部楼层
很不错,支持下,继续努力!
回复 支持 反对

使用道具 举报

发表于 2015-12-12 10:14:42 | 显示全部楼层
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
回复 支持 反对

使用道具 举报

发表于 2015-12-12 18:41:18 | 显示全部楼层
本帖最后由 千叶de悠一 于 2015-12-12 18:42 编辑

支持下
不过貌似直接调用文档的话com api也可以
回复 支持 反对

使用道具 举报

发表于 2015-12-15 14:22:15 | 显示全部楼层
那个编译器好用啊。
回复 支持 反对

使用道具 举报

发表于 2015-12-15 14:22:26 | 显示全部楼层
太专业的学不会。
回复 支持 反对

使用道具 举报

发表于 2017-11-26 04:30:26 | 显示全部楼层
有命令格式吗?
回复 支持 反对

使用道具 举报

发表于 2019-2-5 12:06:23 | 显示全部楼层
这么好的东西必须顶一下~ 谢谢分享
回复 支持 反对

使用道具 举报

发表于 2020-7-27 21:52:52 | 显示全部楼层
哈 , 没有源码.
回复 支持 反对

使用道具 举报

发表于 2023-2-5 06:54:39 | 显示全部楼层
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-4-28 17:44 , Processed in 0.044590 second(s), 24 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表