Matlab使用urlread()读取网页乱码问题
- 格式:docx
- 大小:17.67 KB
- 文档页数:7
电脑乱码问题的解决方案问题描述:在使用电脑过程中,我们有时会遇到乱码的情况。
乱码指的是在显示文字时浮现了不正常的字符或者乱序的现象,使得文字无法正常阅读。
乱码问题可能浮现在操作系统、应用程序、网页浏览器等各个方面。
本文将为您提供一些常见的电脑乱码问题的解决方案。
解决方案一:检查文字编码设置1. 操作系统乱码问题:- 对于Windows系统,可以通过以下步骤检查文字编码设置:1) 右击桌面上的“我的电脑”图标,选择“属性”。
2) 在“系统属性”窗口中,点击“高级系统设置”。
3) 在“系统属性”窗口的“高级”选项卡中,点击“环境变量”。
4) 在“环境变量”窗口中,找到“系统变量”下的“LANG”或者“LC_ALL”变量,确认其数值为正确的语言编码,例如“zh_CN.UTF-8”表示简体中文编码。
5) 如果没有找到相应的变量,可以点击“新建”按钮,添加一个新的变量,名称为“LANG”或者“LC_ALL”,数值为正确的语言编码。
6) 完成设置后,点击“确定”关闭窗口,并重启电脑使设置生效。
- 对于Mac OS系统,可以通过以下步骤检查文字编码设置:1) 点击屏幕上的“苹果”图标,选择“系统偏好设置”。
2) 在“系统偏好设置”窗口中,点击“语言与地区”。
3) 在“语言与地区”窗口中,点击“高级”按钮。
4) 在“高级”窗口中,选择正确的语言编码,例如“简体中文”。
5) 完成设置后,点击“确定”关闭窗口,并重启电脑使设置生效。
2. 应用程序乱码问题:- 对于Microsoft Office软件,可以通过以下步骤检查文字编码设置:1) 打开Office软件(如Word、Excel等)。
2) 点击软件菜单中的“文件”选项。
3) 在“文件”菜单中,选择“选项”。
4) 在“选项”窗口中,选择“高级”选项卡。
5) 在“高级”选项卡中,找到“显示”部份的“显示文档内容”选项。
6) 确保“显示文档内容”选项下的“使用操作系统语言”复选框被勾选。
乱码修复方法乱码修复方法什么是乱码乱码是指显示的文字或图像因编码问题出现乱序、乱码或无法辨识的情况。
乱码常见于字符集不匹配或编码转换错误的情况下。
方法一:选择正确的字符集1.确认文档的原始字符集。
2.在使用文档时,设置正确的字符集。
3.如果乱码出现在网页中,可以通过HTML meta标签或HTTP头设置正确的字符集。
方法二:使用正确的文本编辑器1.避免使用不支持多种字符集的编辑器。
2.确保编辑器的默认字符集与文档的字符集一致。
3.在保存文档时,选择正确的字符集。
方法三:使用编码转换工具1.使用专业的编码转换工具,如iconv、cconv等。
2.将文档转换为正确的字符集,并保存。
方法四:检查编码设置1.检查操作系统的默认编码设置,确保与文档的字符集一致。
2.检查文档相关应用程序的编码设置,如浏览器、文本编辑器等。
方法五:使用在线工具修复乱码1.在线工具如Code Beautify、Online Encoding Conversion等可以帮助修复乱码。
2.上传文档并选择正确的字符集,工具会自动转换并修复乱码。
方法六:手动修复乱码1.备份乱码的文档,确保安全。
2.逐个字符或词组进行对照,尝试找到乱码的原始字符并替换之。
方法七:寻求专业帮助1.如果乱码问题比较复杂,可以寻求专业人士的帮助。
2.专业人士可以通过分析乱码原因,提供更有效的解决方法。
以上是一些常见的乱码修复方法,根据具体情况可以选择合适的方法进行修复。
希望本文对解决乱码问题有所帮助。
请注意:本文所述方法仅适用于一般乱码情况,对于特殊情况可能需要更加复杂的处理方式。
在进行修复前请确保已备份原始文档,以免造成不可逆的损失。
方法一:选择正确的字符集1.确认文档的原始字符集。
可以通过查看文档属性、编辑器设置或者与文档创建者确认来获取字符集的信息。
2.在使用文档时,设置正确的字符集。
可以在文档编辑器或操作系统设置中选择与文档字符集一致的选项。
3.如果乱码出现在网页中,可以通过HTML meta标签或HTTP头设置正确的字符集。
MATLAB安装问题解决方案大集锦1,安装Matlab提示exception calling main解决方法在安装完windows sp3补丁后,很多人发现matlab2007b无法正常运行,总是启动画面闪一下,然后就没反应了,或者有时候弹出exception calling main的系统错误提示。
解决此问题的办法很简单,右键单击matlab程序图标,选择属性,在兼容性选项卡中勾选"用兼容性运行此程序",兼容模式为window NT 4.0(service pack 5),确定后即可恢复正常2,安装时出现红色叉杠并出现英文字母:The installer cannot read the mwinstall.dll file, This is probably due to a CD reader which can only read files with an eight.three naming convention. Please see the technical support page at 解决方法:请一定不要用WinRar之类的解压软件来再次解压matlab.iso文件,而是必须要用Daemon Tools一类的虚拟光驱软件来打开!3,输入注册码后出现红色叉杠并出现英文字母:There are no products to install, check that the product.zip files are in either the root folder or the ‘archives’folder.解决方法:在我的电脑-右键-属性,在系统属性对话框中选择高级-环境变量-TMP改为C:\Temp ,同时在C的根目录下建立Temp文件夹,问题可以解决。
4,运行Setup.exe以后出现名为Unknown Exception而只有一个大红叉的窗口,只有“OK”一个按钮,而且按了也无法关闭。
Matlab基本使用的一些常见问题0我也是最近刚刚接触MATLAB,不得不说MATLAB绝对是一款功能强大的矩阵计算仿真软件!尤其是对通信工程专业的学生,学习好MATLAB更是十分重要的!0然而,在平时的学习中,我们一般安装的都是MA TLAB7.0,而该版本在当今流行的操作系统下是有些问题的,就平时可能遇到的一些问题,给新接触的同学们分享一些经验!0问题一:使用AMD的cpu的电脑无法安装matlab 0情况(1):无法打开安装程序0原因:电脑的环境变量有问题,电脑的用户名是中文的,而MA TLAB默认的安装目录和环境变量目录都不能出现中文0解决办法:设置环境变量,右击“我的电脑”-“属性”-“高级”-“环境变量”,把用户自定义环境变量中TEMP 和TMP值都改为C:/Temp然后在C盘下建一个C:/Temp 目录。
0情况(2):打开MA TLAB后闪一下自动关闭0原因:MATLAB要用到CPU的数学计算模块,而MATLAB默认的是INTEL的CPU,所以速龙或者是闪龙的CPU一般都会遇到安装好后打开自动关闭的问题。
0解决办法:1、安装好后(假如安装在D:\盘中),先确认在此安装路径下D:\\Matlab\bin\win32有一个atlas_Athlon.dll的文件(AMD系列的要用这个)2、然后在“我的电脑”上右击点“属性”,再在“高级”中点“环境变量”,在“系统变量”中“新建”,变量名:BLAS_VERSION变量值:D:\Matlab7\bin\win32\atlas_Athlon.dll0情况(3):打开MA TLAB后又会出现一些英文提示,出现如下---The element type "name" must be terminated by thematching end-tag "</name>". Could not parse the file:d:\matlab\toolbox\ccslink\ccslink\info.xml.0解决办法:找到matlab7\toolbox\ccslink\ccslink\info.xml这个文件,用记事本打开这个文件,找到有一行这样的<name>Linkfor Code ComposerStudio?/name>,把这句的/name>改成</name>,再保存一下这文件。
Python爬取⽹站返回的内容为乱码解决⽅法1、爬取某⽹站内容时,返回的结果为乱码,如图:
2、写在前⾯的解释
Requests会基于HTTP头部响应的编码做出有根据的推测,当访问r.text时,Requests会使⽤其推测的⽂本编码。
查看⽹页返回的字符集类型:r.apparent_encoding
查看⾃动判断的字符集类型:r.encoding
可以看到Requests推测的⽂本编码(ISO-8859-1)与源⽹页编码(utf-8)不⼀致,因此会导致乱码问题的出现。
注:源⽹页也能直接查看编码格式,如下图:
3、解决⽅法
这⾥要注意顺序,需要先指定r.encoding的编码格式,再访问r.text。
即第9⾏代码必须写在第10⾏代码之前。
(1)⽅法⼀:直接指定r.encoding为源⽹页的编码格式
r.encoding="utf-8"
(2)⽅法⼆:通过r.apparent_encoding属性来指定,直接将其值赋给r.encoding
r.encoding = r.apparent_encoding
(3)⽅法三:通过编码、解码的⽅式
4、乱码问题解决
--------结束----------。
电脑乱码问题的解决方案引言概述:随着电脑的普及和互联网的发展,电脑乱码问题成为了许多用户面临的困扰。
乱码不仅会影响文字的显示和阅读,还可能导致文件损坏和数据丢失。
然而,乱码问题并非不可解决的,本文将介绍一些常见的电脑乱码问题及其解决方案。
一、操作系统乱码问题的解决方案:1.1 更新操作系统和语言包:操作系统和语言包的更新可以修复一些已知的乱码问题。
用户可以通过操作系统的自动更新功能或者官方网站手动下载更新包进行安装。
1.2 调整系统区域和语言设置:在控制面板中的区域和语言设置中,选择正确的区域和语言设置,确保与所使用的文档或者网页编码一致。
1.3 安装字体文件:某些乱码问题可能是由于缺少所需的字体文件导致的。
用户可以从官方网站下载并安装所需的字体文件,以解决乱码问题。
二、浏览器乱码问题的解决方案:2.1 清除浏览器缓存和Cookie:浏览器缓存和Cookie可能会导致乱码问题。
用户可以在浏览器设置中找到清除缓存和Cookie的选项,清除后重新加载页面,以解决乱码问题。
2.2 更换浏览器或者升级版本:不同的浏览器对于编码支持的程度不同,用户可以尝试更换其他浏览器或者升级当前浏览器版本,以解决乱码问题。
2.3 检查浏览器编码设置:在浏览器设置中,用户可以检查编码设置是否与所访问的网页编码一致,如果不一致,可以手动调整编码设置,以解决乱码问题。
三、文件编码乱码问题的解决方案:3.1 使用正确的文件编码格式:在创建或者保存文件时,用户应该选择正确的文件编码格式,如UTF-8、GB2312等,以确保文件能够正确显示和读取。
3.2 手动更改文件编码:对于已存在的乱码文件,用户可以尝试手动更改文件编码格式。
可以使用专业的文本编辑工具,如Notepad++,打开文件并选择正确的编码格式进行保存。
3.3 使用专业的文件转换工具:如果手动更改文件编码不起作用,用户可以尝试使用专业的文件转换工具来转换文件编码格式,以解决乱码问题。
电脑乱码问题的解决方案一、问题描述在使用电脑过程中,有时会遇到乱码问题,即显示的文字变得无法识别或混乱。
这种情况会给我们的工作和学习带来很大困扰,因此我们需要找到解决方案来解决电脑乱码问题。
二、可能原因分析1. 字符编码不匹配:电脑上的文本可能使用了不同的字符编码方式,导致显示乱码。
2. 字体缺失或损坏:电脑上的字体文件可能缺失或损坏,导致无法正确显示文字。
3. 系统语言设置错误:电脑系统的语言设置可能出错,导致显示乱码。
4. 病毒感染:电脑可能受到病毒或恶意软件的感染,导致文件损坏或乱码。
三、解决方案根据可能的原因,我们可以尝试以下解决方案来解决电脑乱码问题:1. 检查字符编码:a. 打开乱码文件或网页,找到乱码的文字。
b. 右键点击乱码文字,选择“属性”或“查看属性”。
c. 在属性窗口中查看“编码”选项,将其设置为正确的字符编码方式,如UTF-8、GBK等。
d. 重新打开文件或网页,查看是否解决了乱码问题。
2. 检查字体文件:a. 打开“控制面板”并进入“字体”选项。
b. 检查是否缺失了需要的字体文件,如果有,可以尝试从其他电脑或官方网站下载并安装缺失的字体文件。
c. 如果字体文件损坏,可以尝试删除并重新安装相应的字体文件。
d. 重新打开文件或网页,查看是否解决了乱码问题。
3. 检查系统语言设置:a. 打开“控制面板”并进入“区域和语言”选项。
b. 确保选择了正确的语言和地区设置,如中文(简体中国)。
c. 如果语言设置错误,可以进行更改并重新启动电脑。
d. 重新打开文件或网页,查看是否解决了乱码问题。
4. 扫描病毒:a. 运行杀毒软件进行全盘扫描,确保电脑没有受到病毒或恶意软件的感染。
b. 如果发现病毒或恶意软件,按照杀毒软件的提示进行处理。
c. 重新打开文件或网页,查看是否解决了乱码问题。
四、预防措施为了避免电脑乱码问题的再次发生,我们可以采取以下预防措施:1. 定期更新系统和软件:及时安装系统和软件的更新补丁,以修复可能存在的漏洞和问题。
matlab中imread函数的用法MATLAB中imread函数的用法MATLAB是一款强大的数学工具,用于矩阵计算、数据分析、绘图和图像处理。
imread 函数是用于读入图像文件的函数之一。
读入的图像可以是常见的各种格式,比如BMP、GIF、JPEG、PNG等。
语法格式:```img = imread(filename)img = imread(filename, fmt)```filename为图像所在路径和文件名,fmt为文件格式(可选)。
如果fmt省略,则MATLAB会自动检测图像文件的格式。
函数返回值:img:读入的图像矩阵imread函数的常见用法1. 读入 RGB 彩色图像RGB彩色图像保存为三通道的图像,分别是红、绿、蓝三个颜色通道,每个通道的值范围是 [0,255]。
读入RGB图像:```img = imread('example.jpg');```2. 读入灰度图像灰度图像只有一个通道,通道数为1,每个像素点的值在[0,255]之间。
读入灰度图像:```img = imread('example_gray.jpg');3. 指定图像格式如果图像文件的格式不支持自动检测,可以使用fmt参数来指定图像文件的格式,如JPEG格式:```img = imread('example.jpg', 'jpg');```4. 读入部分图像使用imread函数可以读入部分图像,只需要指定图像文件中某一部分的范围即可,例如:```img = imread('example.jpg','PixelRegion',{[1 10],[1 10],[]});```使用PixelRegion选项,可以选择只读入图像的某一区域,前两个参数指定所选区域的行和列的范围,第三个参数指定通道范围(如果是灰度图像则省略)。
各种中⽂乱码解决办法在编程的时候会遇到各种中⽂乱码,这⾥进⾏统计以便以后查阅1、前端页⾯元素中⽂乱码<meta http-equiv="Content-Type" content="text/html; charset=GBK" />会出现下⾯乱码页⾯上的元素也就是html内的元素,是中⽂的会出现乱码,⽽从后台获取的中⽂不会出现乱码。
解决⽅法:页⾯上设置编码⽅式为UTF-8<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />2、URL传参、get⽅式传参出现中⽂乱码,如下出现这种情况,要先确定参数在前台页⾯上不是乱码的,可以alert()⼀下,看参数是否乱码解决办法1:对于以get⽅式传输的数据,request默认使⽤ISO8859-1这个字符编码来接收数据,客户端以UTF-8的编码传输数据到服务器端,⽽服务器端的request对象使⽤的是ISO8859-1这个字符编码来接收数据,服务器和客户端沟通的编码不⼀致因此才会产⽣中⽂乱码的。
解决办法:在接收到数据后,先获取request对象以ISO8859-1字符编码接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决乱码问题。
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String id= request.getParameter("id");id=new String(name.getBytes("ISO8859-1"), "UTF-8") ;}解决⽅法2:修改tomcat服务器的编码⽅式,可以在server.xml⾥⾯设置<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>设置成红字部分,但是有时也是不可⽤的,因为即使这⾥设置的是UTF-8但是其他地⽅设置成其他编码⽅式会覆盖掉这个设置,仔细检查各个地⽅的编码。
下边提供4种不同情况的乱码解决方案,基本上包括了web开发中出现乱码的不同情况。
主要针对java+mysql开发环境提出的乱码解决方案,只要作相应修改,可以用于不同语言环境的乱码问题解决。
一、JSP页面显示乱码下面的显示页面(display.jsp)就出现乱码:程序代码<html><head><title>JSP的中文处理</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><%out.print("JSP的中文处理");%></body></html>对不同的WEB服务器和不同的JDK版本,处理结果就不一样。
原因:服务器使用的编码方式不同和浏览器对不同的字符显示结果不同而导致的。
解决办法:在JSP页面中指定编码方式(gb2312),即在页面的第一行加上:<%@ page contentType="text/html; charset=gb2312"%>,就可以消除乱码了。
完整页面如下:<%@ page contentType="text/html; charset=gb2312"%><html><head><title>JSP的中文处理</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><%out.print("JSP的中文处理");%></body></html>二、表单提交中文时出现乱码下面是一个提交页面(submit.jsp),代码如下:程序代码<html><head><title>JSP的中文处理</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><form name="form1" method="post" action="process.jsp"><div align="center"><input type="text" name="name"><input type="submit" name="Submit" value="Submit"></div></form></body></html>下面是处理页面(process.jsp)代码:程序代码<%@ page contentType="text/html; charset=gb2312"%><html><head><title>JSP的中文处理</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><%=request.getParameter("name")%></body></html>如果submit.jsp提交英文字符能正确显示,如果提交中文时就会出现乱码。
Matlab使用urlread()读取网页乱码问题事先声明这是本人在网上找到的(/2012-05/matlaburlread.html),非原创:Matlab的urlread()函数可以读取网页,调用语法:S = urlread('URL','method',PARAMS)共有三个参数,第一个是网页地址,第二个是get或是post,意思很直白;第三个则是要向网页传递的参数,详细见help文档。
本博文的这个问题不是重点。
重点在于,用这个读取中文网页会乱码。
例如:S=urlread('');自己去看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('','get','','GBK')这样返回来的文字里面就可以正常显示中文了。
为了方便大家修改,我把改好后的代码和未改的原代码放在了下一页,就这一点是比原文多的,也是害怕自己忘了。
要是嫌麻烦,就把下一页的代码复制粘贴过去,覆盖源代码,不过别忘了把原代码保留一份,免得忘了怎么改回来。
修改后的代码:function [output,status] = urlread(urlChar,method,params,webencoding)if nargin<4;webencoding='UTF-8';end%URLREAD Returns the contents of a URL as a string.% S = URLREAD('URL') reads the content at a URL into a string, S. If the% server returns binary data, the string will contain garbage.%% S = URLREAD('URL','method',PARAMS) passes information to the server as % part of the request. The 'method' can be 'get', or 'post' and PARAMS is a % cell array of param/value pairs.%% [S,STATUS] = URLREAD(...) catches any errors and returns 1 if the file% downloaded successfully and 0 otherwise.%% Examples:% s = urlread('')% s = urlread('ftp:///README')% s = urlread(['file:///' fullfile(prefdir,'history.m')])%% From behind a firewall, use the Preferences to set your proxy server.%% See also URLWRITE.% Matthew J. Simoneau, 13-Nov-2001% Copyright 1984-2008 The MathWorks, Inc.% $Revision: 1.3.2.10 $ $Date: 2008/10/02 18:59:57 $% This function requires Java.if ~usejava('jvm')error('MATLAB:urlread:NoJvm','URLREAD requires Java.');endimport com.mathworks.mlwidgets.io.InterruptibleStreamCopier;% Be sure the proxy settings are set.com.mathworks.mlwidgets.html.HTMLPrefs.setProxySettings% Check number of inputs and outputs.error(nargchk(1,4,nargin))error(nargoutchk(0,2,nargout))if ~ischar(urlChar)error('MATLAB:urlread:InvalidInput','The first input, the URL, must be a character array.'); endif (nargin > 1) && ~strcmpi(method,'get') && ~strcmpi(method,'post')error('MATLAB:urlread:InvalidInput','Second argument must be either "get" or "post".'); end% Do we want to throw errors or catch them?if nargout == 2catchErrors = true;elsecatchErrors = false;end% Set default outputs.output = '';status = 0;% GET method. Tack param/value to end of URL.if (nargin > 1) && strcmpi(method,'get')if mod(length(params),2) == 1error('MATLAB:urlread:InvalidInput','Invalid parameter/value pair arguments.');endfor i=1:2:length(params)if (i == 1), separator = '?'; else separator = '&'; endparam = char(.URLEncoder.encode(params{i}));value = char(.URLEncoder.encode(params{i+1}));urlChar = [urlChar separator param '=' value];endend% Create a urlConnection.[urlConnection,errorid,errormsg] = urlreadwrite(mfilename,urlChar);if isempty(urlConnection)if catchErrors, returnelse error(errorid,errormsg);endend% POST method. Write param/values to server.if (nargin > 1) && strcmpi(method,'post')tryurlConnection.setDoOutput(true);urlConnection.setRequestProperty( ...'Content-Type','application/x-www-form-urlencoded');printStream = java.io.PrintStream(urlConnection.getOutputStream);for i=1:2:length(params)if (i > 1), printStream.print('&'); endparam = char(.URLEncoder.encode(params{i}));value = char(.URLEncoder.encode(params{i+1}));printStream.print([param '=' value]);endprintStream.close;catchif catchErrors, returnelse error('MATLAB:urlread:ConnectionFailed','Could not POST to URL.');endendend% Read the data from the connection.tryinputStream = urlConnection.getInputStream;byteArrayOutputStream = java.io.ByteArrayOutputStream;% This StreamCopier is unsupported and may change at any time.isc = InterruptibleStreamCopier.getInterruptibleStreamCopier;isc.copyStream(inputStream,byteArrayOutputStream);inputStream.close;byteArrayOutputStream.close;output = native2unicode(typecast(byteArrayOutputStream.toByteArray','uint8'),webencoding);catchif catchErrors, returnelse error('MATLAB:urlread:ConnectionFailed','Error downloading URL. Your network connection may be down or your proxy settings improperly configured.');endendstatus = 1;未改前的原代码为:function [output,status] = urlread(urlChar,method,params)%URLREAD Returns the contents of a URL as a string.% S = URLREAD('URL') reads the content at a URL into a string, S. If the% server returns binary data, the string will contain garbage.%% S = URLREAD('URL','method',PARAMS) passes information to the server as% part of the request. The 'method' can be 'get', or 'post' and PARAMS is a% cell array of param/value pairs.%% [S,STATUS] = URLREAD(...) catches any errors and returns 1 if the file% downloaded successfully and 0 otherwise.%% Examples:% s = urlread('')% s = urlread('ftp:///README')% s = urlread(['file:///' fullfile(prefdir,'history.m')])%% From behind a firewall, use the Preferences to set your proxy server.%% See also URLWRITE.% Matthew J. Simoneau, 13-Nov-2001% Copyright 1984-2008 The MathWorks, Inc.% $Revision: 1.3.2.10 $ $Date: 2008/10/02 18:59:57 $% This function requires Java.if ~usejava('jvm')error('MATLAB:urlread:NoJvm','URLREAD requires Java.');endimport com.mathworks.mlwidgets.io.InterruptibleStreamCopier;% Be sure the proxy settings are set.com.mathworks.mlwidgets.html.HTMLPrefs.setProxySettings% Check number of inputs and outputs.error(nargchk(1,3,nargin))error(nargoutchk(0,2,nargout))if ~ischar(urlChar)error('MATLAB:urlread:InvalidInput','The first input, the URL, must be a character array.'); endif (nargin > 1) && ~strcmpi(method,'get') && ~strcmpi(method,'post')error('MATLAB:urlread:InvalidInput','Second argument must be either "get" or "post".'); end% Do we want to throw errors or catch them?if nargout == 2catchErrors = true;elsecatchErrors = false;end% Set default outputs.output = '';status = 0;% GET method. Tack param/value to end of URL.if (nargin > 1) && strcmpi(method,'get')if mod(length(params),2) == 1error('MATLAB:urlread:InvalidInput','Invalid parameter/value pair arguments.');endfor i=1:2:length(params)if (i == 1), separator = '?'; else separator = '&'; endparam = char(.URLEncoder.encode(params{i}));value = char(.URLEncoder.encode(params{i+1}));urlChar = [urlChar separator param '=' value];endend% Create a urlConnection.[urlConnection,errorid,errormsg] = urlreadwrite(mfilename,urlChar);if isempty(urlConnection)if catchErrors, returnelse error(errorid,errormsg);endend% POST method. Write param/values to server.if (nargin > 1) && strcmpi(method,'post')tryurlConnection.setDoOutput(true);urlConnection.setRequestProperty( ...'Content-Type','application/x-www-form-urlencoded');printStream = java.io.PrintStream(urlConnection.getOutputStream);for i=1:2:length(params)if (i > 1), printStream.print('&'); endparam = char(.URLEncoder.encode(params{i}));value = char(.URLEncoder.encode(params{i+1}));printStream.print([param '=' value]);endprintStream.close;catchif catchErrors, returnelse error('MATLAB:urlread:ConnectionFailed','Could not POST to URL.');endendend% Read the data from the connection.tryinputStream = urlConnection.getInputStream;byteArrayOutputStream = java.io.ByteArrayOutputStream;% This StreamCopier is unsupported and may change at any time.isc = InterruptibleStreamCopier.getInterruptibleStreamCopier;isc.copyStream(inputStream,byteArrayOutputStream);inputStream.close;byteArrayOutputStream.close;output = native2unicode(typecast(byteArrayOutputStream.toByteArray','uint8'),'UTF-8'); catchif catchErrors, returnelse error('MATLAB:urlread:ConnectionFailed','Error downloading URL. Your network connection may be down or your proxy settings improperly configured.');endendstatus = 1;。