UTF-8编码转换函数
来源:互联网 发布:怎么学数据库 编辑:程序博客网 时间:2024/06/10 16:49
前几天帮同事把爱立信的通讯录导出到多普达手机时发现文字编码不对,上网查了一下用两个函数转换
''' <summary>
''' 转换UTF-8串到汉字字符串
''' </summary>
''' <param name="str">必选。UTF-8编码字符串</param>
''' <param name="bHex">可选。UTF-8编码类型十六进制或是十进制,默认值为十六进制</param>
''' <param name="strSplit">可选。编码前缀分隔符</param>
''' <returns>汉字字符串</returns>
''' <remarks>2009-1-18 15:51:59 Sunday</remarks>
Public Function UTF8toString(ByVal str As String, Optional ByVal bHex As Boolean = True, Optional ByVal strSplit As String = "") As String
'转换UTF-8十进制串到字符
'每3位为一段,每3段表示一个汉字
Try
Dim re As String = ""
Dim strT As String = ""
If strSplit.Length > 0 Then
'清除原前缀分隔附
str = str.Replace(strSplit, "")
End If
If bHex = True Then
'传入参数长度位数检测
If (str.Length Mod 2) <> 0 Then
Return Nothing
End If
'将十六进制串转换为十进制字符串
For i As Integer = 1 To str.Length Step 2
strT &= c16to10(Mid(str, i, 2))
Next
Else
'传入参数长度位数检测
If (str.Length Mod 3) <> 0 Then
Return Nothing
End If
strT = str
End If
'将字符串传入一个Byte数组
Dim eByte(strT.Length / 3) As Byte
For i As Integer = 1 To strT.Length Step 3
eByte(i / 3) = Mid(strT, i, 3)
Next
ReDim Preserve eByte(eByte.Length - 2)
'转换数据到汉字
re = System.Text.UTF8Encoding.UTF8.GetString(eByte)
Return re
Catch ex As Exception
Return Nothing
End Try
End Function
''' <summary>
''' 转换汉字字符为用UTF-8编码。十进制时每3位为一段,十六进制时每2位为一段,每3段表示一个汉字。
''' </summary>
''' <param name="str">必选。需要转换的汉字字符串</param>
''' <param name="bHex">可选。转换到十进制或十六进制字符串,默认为十六进制字符串</param>
''' <param name="strSplit">可选。字符串前缀分隔符</param>
''' <returns>UTF-8编码字符串</returns>
''' <remarks>2009-1-18 16:8:29 Sunday</remarks>
Public Function StringToUTF8(ByVal str As String, Optional ByVal bHex As Boolean = True, Optional ByVal strSplit As String = "") As String
Try
Dim re As String = ""
Dim s As String = ""
Dim eByte As Byte()
eByte = System.Text.UTF8Encoding.UTF8.GetBytes(str)
For Each b As Byte In eByte
re &= b.ToString
Next
If bHex = True Then
'转换为十六进制
If strSplit.Length > 0 Then
For i As Integer = 1 To re.Length Step 3
s &= strSplit & c10to16(Mid(re, i, 3))
Next
Return s
Else
Return re
End If
Else
'转换为十进制
If strSplit.Length > 0 Then
For i As Integer = 1 To re.Length Step 3
s &= strSplit & Mid(re, i, 3)
Next
Return s
Else
Return re
End If
End If
Catch ex As Exception
Return Nothing
End Try
End Function
- UTF-8编码转换函数
- UTF-8编码转换
- vbscript中gb2312转换为UTF-8编码的函数
- vc中字符串到UTF-8编码转换函数
- GB2312、UTF-8等编码转换函数iconv()使用方法
- vbs 转码 gb2312转换为UTF-8编码的函数
- UTF-8编码的转换
- 转换编码到utf-8
- 编码转换utf-8/gb2312
- UTF-8编码格式转换
- 转换UTF-8函数
- UTF-8、UTF-16、UTF-32之间的编码转换
- UTF-8、UTF-16、UTF-32编码的相互转换
- UTF-8、UTF-16、UTF-32编码的相互转换
- 字符编码转换 各种函数 UTF格式转换、
- 不用iconv函数实现UTF-8编码转换GB2312的PHP函数
- UTF-8转换GB2312函数
- UTF-8转换GB2312函数
- 不知道Key的情况下,遍历Map
- EVC之CListCtrl
- SQL Server XQuery 学习笔记(三)
- 在Hibernate中处理批量更新和批量删除
- 就此开始
- UTF-8编码转换函数
- 互联网创业公司发展
- 解决【the project file'xxxx'cannot be opened.the project ...】
- 2009.03.21
- 2009.03.22
- 2009.03.23
- 提取汉字拼音码首字母函数
- 二进制、八进制、十进制、十六进制转换函数
- 流媒体技术应用分类