编码啥的真的很烦人啊。
mWiFi 是小梦写的一个免费开源的 WiFi 共享程序(戳死我以便查看),好用是好用(啊喂不要这么自恋)可是 SSID 不能用中文,这就没法吸引到隔壁的妹子了(玩笑,小梦家隔壁没人 2333),像什么 360 免费 WiFi、软媒 WiFi 助手之类的都完美支持中文 SSID 呢。
研究了一下,好像是编码的问题,比如小梦用 软媒 WiFi 助手 创建一个名为『浩然爱 RK』的热点,在 mWiFi 看到却是一坨乱码(最多能看到最后的 K)。
但是前段时间练习使用正则解析 Json(原谅我,NewtonSoft.Json 那个库真的不会用,有大神会的话求教)的 mMSDN(获取微软 MSDN 下载链接)中对于乱码使用 System.Text.Encoding 转一下就好了,但是似乎在 mWiFi 里这个方法行不通,UTF-8/UTF-16/UTF-32 什么的都试过,出来的还是乱码。
看了一下,命令提示符的默认编码是 GBK,但具体 VB.NET 里使用的 System.Text.Encoding.Default 到底是什么还不清楚,网上似乎也没有太多的资料,如果把这个 Default 编码搞清楚了,那乱码的问题是不是就可以解决了呢:)
后:
最后摸索了一下,还是成功解决了编码的问题(妹子快来连 WiFi),特在这里记录一下,以便后面使用。
(其实代码可以稍微精简一下的╮(╯▽╰)╭)
Dim res As Byte() = System.Text.Encoding.Encoding.UTF8.GetBytes(SSIDName) Dim ret As String = System.Text.Encoding.Encoding.UTF8.GetString(res) Dim sr As Byte() = System.Text.Encoding.Convert(Encoding.UTF8, Encoding.Default, res) ret = System.Text.Encoding.Default.GetString(sr)
Dim by As Byte() = System.Text.Encoding.Encoding.Default.GetBytes(TextBoxX1.Text) Dim sr As Byte() = System.Text.Encoding.Convert(Encoding.Default, Encoding.UTF8, by) Dim ret As String = System.Text.Encoding.UTF8.GetString(sr)
还有借贵宝地吐槽下,这gravatar被wordpress收购之后,原来的gravatar用户登陆入口在哪里啊!!我的头像不能就这么下去吧!!
我也是最近才开始用 Gravatar 的,不过我直接用的 WordPress 帐号登录的
那个 System.Text.Encoding.Default不是系统默认编码的意思吗..
中文windows下的ANSI是GB2312,GBK又是GB2312的扩充,无线名是用的Unicode?
关于 System.Text.Encoding.Default,你说的其实并没有错,VB.NET 对于文字处理的编码是 Encoding.Default,但是如果以默认编码将 SSID 传到 netsh 命令上的话就会出现乱码,而以 UTF-8 编码传的话就不会出问题,不知道是不是系统对于某些字符使用的是 UTF-8。