当前位置: 移动技术网 > 科技>操作系统>windows > [VB.NET Tips]StrConv简体转繁体在繁体操作系统下显示为乱码

[VB.NET Tips]StrConv简体转繁体在繁体操作系统下显示为乱码

2020年03月09日  | 移动技术网科技  | 我要评论

3u8760,宫心计粤语版,范冰冰色情

公司erp系统(winform)要搞个繁体版,供中国台湾同胞使用。
为了简便起见,写了几个方法,在form_load里调用。

    public sub transcontroltexttotraditionalchinese(byref tpinstance as form)

        tpinstance.text = transtexttotraditionalchinese(tpinstance.text)

        for each objcontrol in tpinstance.controls

            if typeof (objcontrol) is menustrip orelse
               typeof (objcontrol) is toolstrip orelse
               typeof (objcontrol) is statusstrip then

                transcontroltexttotraditionalchinese_tool(objcontrol)

            elseif typeof (objcontrol) is flowlayoutpanel then

                transcontroltexttotraditionalchinese_flowlayoutpanel(objcontrol)

            elseif typeof (objcontrol) is panel orelse
                   typeof (objcontrol) is groupbox then

                transcontroltexttotraditionalchinese(objcontrol)

            elseif typeof (objcontrol) is tabcontrol then

                transcontroltexttotraditionalchinese_tabcontrol(objcontrol)

            elseif typeof (objcontrol) is datagridview then

                transcontroltexttotraditionalchinese_datagridview(objcontrol)

            elseif typeof (objcontrol) is textbox orelse
                   typeof (objcontrol) is label orelse
                   typeof (objcontrol) is button orelse
                   typeof (objcontrol) is checkbox orelse
                   typeof (objcontrol) is radiobutton then

                objcontrol.text = strconv(objcontrol.text, vbstrconv.traditionalchinese)

            end if

        next

    end sub

核心的还是这一句:objcontrol.text = strconv(objcontrol.text, vbstrconv.traditionalchinese)

在简体版win7下运行良好。到了中文(台湾)繁体版win7下,直接成了乱码了。
错误展示
真是百思不得其解。

仔细研究了一下strconv方法,还有第三个参数。

public function strconv(str as string, conversion as microsoft.visualbasic.vbstrconv, optional localeid as integer = 0) as string

查了msdn也没有结果,最后在网上查到了相关资料。
毛病就出这个localeid这个参数上,这个参数指的是转换后的语言的代码。
以下是我在网上搜索到的windows下常用语言以及对应的代码

语言 代码
中文(香港特别行政区) 3076
中文(中国) 2052
中文(台湾) 1028
英语(美国) 1033

在office及vs的安装目录都能看到2052这个目录,代表的就是中文简体。
那我们做一些测试。

    textbox1.text = strconv("我是中国人", vbstrconv.traditionalchinese, 2052)    '显示我是中國人
    textbox2.text = strconv("我是中国人", vbstrconv.traditionalchinese, 1028)    '显示乱码  我是中?人
    textbox3.text = strconv("我是中国人", vbstrconv.traditionalchinese, 1033)    '显示我是中國人 

1028是windows下的中文(台湾)代码。在转换使用这个代码表时,不是所有的中文简体编码值在繁体中都存在,所以就出现了?号。
而localeid默认为0也就是使用系统默认的,那在中文(台湾)繁体版操作系统下这个就为1028.
所以出现了之前的那个乱码的图片。
那最好使用1033。代表英文en-us,当使用1033时,遇到中文时就会以unicode来编码。就不会出现简繁转换乱码的问题。

最终把我的代码改为了:

objcontrol.text = strconv(objcontrol.text, vbstrconv.traditionalchinese)

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网