以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  []求助]unicode编码怎么样处理成为汉字呀?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=64402)

--  作者:liguichuan
--  发布时间:2015/2/12 19:39:00
--  []求助]unicode编码怎么样处理成为汉字呀?
像“\\u8717\\u725B\\u8BF4\\u7EE7\\u7EED”这一类的unicode编码怎么样处理成为汉字呀?
--  作者:有点甜
--  发布时间:2015/2/12 20:09:00
--  

 

[此贴子已经被作者于2015/2/12 20:09:41编辑过]

--  作者:有点甜
--  发布时间:2015/2/12 20:12:00
--  

Dim str As String = "\\u8717\\u725B\\u8BF4\\u7EE7\\u7EED"
Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "\\\\u.{4}")
Dim c As String = ""
For i As Integer = 0 To mc.count - 1
    c &= chrw(Convert.ToInt32(mc(i).value.substring(2), 16))
Next

msgbox(c)


--  作者:liguichuan
--  发布时间:2015/2/12 20:18:00
--  
使用了正则表达式。那如果是字符串里面含有其它的非unicode字符同时又含有unicode字符要如何改写代码?正则我不懂。

例如:"abc我告诉你一件事哦!\\u8717\\u725B\\u8BF4\\u7EE7\\u7EED"[也有可能是:"abc我告诉你一件事哦!\\u8717\\u725B\\u8BF4\\u7EE7\\u7EED。你信不信?”]
像上面这个字符串,怎么写才能不丢失任何信息。
能不能逐个查找,然后用字符串替换的方式重新生成。
谢谢。
[此贴子已经被作者于2015/2/12 20:22:16编辑过]

--  作者:有点甜
--  发布时间:2015/2/12 20:30:00
--  

Dim str As String = "abc我告诉你一件事哦!\\u8717\\u725B\\u8BF4\\u7EE7\\u7EED啥都....顶顶顶顶ss34地方"
Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "\\\\u.{4}|[^\\\\u]+")
Dim c As String = ""
For i As Integer = 0 To mc.count - 1
    Dim v As String = mc(i).Value
    If v.StartsWith("\\u") Then
        c &= chrw(Convert.ToInt32(v.substring(2), 16))
    Else
        c &= v
    End If
Next

msgbox(c)


--  作者:liguichuan
--  发布时间:2015/2/12 20:38:00
--  
谢谢,达到要求,能大致解释一下吗?特别是“Convert.ToInt32(v.substring(2), 16)”
--  作者:有点甜
--  发布时间:2015/2/12 20:57:00
--  

1、将16进制转成整数;

 

2、将整数整数转成汉字


--  作者:liguichuan
--  发布时间:2015/2/12 21:32:00
--  
如果字符串中含有“u"(非\\u时字母u)也会给处理掉,这个怎么修改?
--  作者:有点甜
--  发布时间:2015/2/12 21:51:00
--  

Dim str As String = "abc我\\告诉你一件事哦!uuuu\\u8717\\u725B\\u8BF4\\u7EE7\\u7EED啥都....顶顶顶顶ss34地方"
Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "\\\\u.{4}|.+?")
Dim c As String = ""
For i As Integer = 0 To mc.count - 1
    Dim v As String = mc(i).Value
    If v.StartsWith("\\u") Then
        c &= chrw(Convert.ToInt32(v.substring(2), 16))
    Else
        c &= v
    End If
Next

msgbox(c)