[VB.NET Tips]StrConv简体转繁体在繁体操作系统下显示为乱码
2021-04-12 10:27
标签:type controls ade 我是中国人 tag 繁体 tools eof tran 公司ERP系统(WINFORM)要搞个繁体版,供中国台湾同胞使用。 核心的还是这一句:objControl.text = StrConv(objControl.text, VbStrConv.TraditionalChinese) 在简体版Win7下运行良好。到了中文(台湾)繁体版Win7下,直接成了乱码了。 仔细研究了一下StrConv方法,还有第三个参数。 查了MSDN也没有结果,最后在网上查到了相关资料。 在Office及VS的安装目录都能看到2052这个目录,代表的就是中文简体。 1028是Windows下的中文(台湾)代码。在转换使用这个代码表时,不是所有的中文简体编码值在繁体中都存在,所以就出现了?号。 最终把我的代码改为了: [VB.NET Tips]StrConv简体转繁体在繁体操作系统下显示为乱码 标签:type controls ade 我是中国人 tag 繁体 tools eof tran 原文地址:https://www.cnblogs.com/tengwei6328/p/12399144.html
为了简便起见,写了几个方法,在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
真是百思不得其解。Public Function StrConv(str As String, Conversion As Microsoft.VisualBasic.VbStrConv, Optional LocaleID As Integer = 0) As String
毛病就出这个LocaleID这个参数上,这个参数指的是转换后的语言的代码。
以下是我在网上搜索到的Windows下常用语言以及对应的代码
语言
代码
中文(香港特别行政区)
3076
中文(中国)
2052
中文(台湾)
1028
英语(美国)
1033
那我们做一些测试。
TextBox1.Text = StrConv("我是中国人", VbStrConv.TraditionalChinese, 2052) '显示我是中國人
TextBox2.Text = StrConv("我是中国人", VbStrConv.TraditionalChinese, 1028) '显示乱码 我是中?人
TextBox3.Text = StrConv("我是中国人", VbStrConv.TraditionalChinese, 1033) '显示我是中國人
而LocaleID默认为0也就是使用系统默认的,那在中文(台湾)繁体版操作系统下这个就为1028.
所以出现了之前的那个乱码的图片。
那最好使用1033。代表英文en-US,当使用1033时,遇到中文时就会以Unicode来编码。就不会出现简繁转换乱码的问题。objControl.text = StrConv(objControl.text, VbStrConv.TraditionalChinese)
上一篇:ajax请求.net后台接收
下一篇:node.js的基本语法
文章标题:[VB.NET Tips]StrConv简体转繁体在繁体操作系统下显示为乱码
文章链接:http://soscw.com/index.php/essay/74679.html