ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

VBS下将gbk转utf-8

2021-01-08 10:35:02  阅读:357  来源: 互联网

标签:Bin regEx utf conv gbk VBS adoStream instru msg


通过zabbix监控windows,由于zabbix server运行在linux下,采用utf-8内码处理,而windows则以gbk(gb2312)做内码,所以当有中文内容上报到zabbix时,会造成编码错误

通过实践,经以下代码处理后,输出基本上符合需求,需不无完全保证无乱码,但已经完全可以接受

msg="需要转码的内容"

instru_msg=""
for i=1 to len(msg) 
	Bin=mid(msg,i,1)
	If RegExpTest("[\u4e00-\u9fa5]", Bin) Then
		if showdebug then
			wscript.echo Bin & "--HZ"
		end if
		instru_msg=instru_msg & conv(Bin)
	else
		instru_msg=instru_msg & Bin
	end if
next
Wscript.Echo instru_msg

Function conv(strIn)
    Set adoStream = CreateObject("ADODB.Stream")
	adoStream.Charset = "utf-8"
    adoStream.Type = 2 'adTypeText 
    adoStream.Open  
    adoStream.WriteText strIn
    adoStream.Position = 0  
    adoStream.Charset = "_autodetect_all"  
    adoStream.Type = 2 'adTypeBinary  
    conv = adoStream.ReadText()  
    adoStream.Close  
      
'	conv = Mid(conv, 1)  
End Function 
Function RegExpTest(patrn, strng)   
    Dim regEx, retVal ' 建立变量。   
    Set regEx = New RegExp ' 建立正则表达式。   
    regEx.Pattern = patrn ' 设置模式。   
    regEx.IgnoreCase = False ' 设置是否区分大小写。   
    retVal = regEx.Test(strng) ' 执行搜索测试。   
    If retVal Then   
        RegExpTest = True  
    Else   
        RegExpTest = False  
    End If   
End Function

 

标签:Bin,regEx,utf,conv,gbk,VBS,adoStream,instru,msg
来源: https://www.cnblogs.com/d9394/p/14250209.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有