楼主: 张裕恒
2170 1

[问答] matlab urlread乱码 [推广有奖]

  • 0关注
  • 0粉丝

初中生

52%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
166 点
帖子
14
精华
0
在线时间
12 小时
注册时间
2013-7-19
最后登录
2015-12-12

楼主
张裕恒 发表于 2013-12-25 16:17:25 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
有谁知道matlab r2013a中urlread函数在读取中文网页出现乱码的问题如何解决,注意是r2013a版本
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:MATLAB atlab matla READ Atl matlab

沙发
matlab-007 发表于 2015-2-14 18:00:16
Matlab使用urlread()读取网页乱码问题
Matlab的urlread()函数可以读取网页,调用语法:
S = urlread('URL','method',PARAMS)
共有三个参数,第一个是网页地址,第二个是get或是post,意思很直白;第三个则是要向网页传递的参数,详细见help文档。本博文的这个问题不是重点。
重点在于,用这个读取中文网页会乱码。例如:S=urlread('http://sina.com.cn');
自己去看S的内容,里面凡是应该是中文文字的部分都是问号。

3年前,我写Matlab基础班讲义的时候实际已经把这个问题解决了,但是没有记录下来,这次又遇上同样的问题,一下子记不起来了(翻开当年讲义,看到自己写到“这个问题可以通过手工修改urlread()函数解决”,感到很愤慨,多写一句我就不用费那劳什子的精神了)

废话打住,下面开工修理urlread()函数,让它能够正常搞中文网页(注我用的是2012A版本,其他版本可能有变化)。在Matlab中输入 edit urlread打开函数代码文件。
修改1:  修改第一行的函数定义,本来是三个参数,在最后添加一个。
例如,我修改后:function [output,status] = urlread(urlChar,method,params,webencoding)
在下面添加一句
if nargin<4; webencoding='UTF-8'; end
作用是与修改前的函数调用语法兼容。
修改2: 修改参数数量检验语句,该语句位于文件中偏前部,例如原来是narginchk(1,3)改为narginchk(1,4)
修改3: 修改文件尾部的数据转换语句,它原本是:
output = native2unicode(typecast(byteArrayOutputStream.toByteArray','uint8'),'UTF-8');
用webencoding替换'UTF-8',注意包括单引号也要替换。
搞定了,然后再读取网页。一般中文网页的网页编码是'GBK'(兼容’GB2312'),调用语法是:
S=urlread('http://sina.com.cn','get','','GBK')
这样返回来的文字里面就可以正常显示中文了。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-23 06:05