如何解决Android WebView出现的乱码问题?

如何解决Android WebView出现的乱码问题?,第1张

1、webView.loadUrl();

直接显示网页内容(单独显示网络图片),一般不会出现乱码。

2、webView.loadData(data, "text/html", "UTF-8")

loadData主要被设计用来装载URI格式的数据,它不能通过网络来加载内容。网上流传的webview加载中文出现乱码,多数是使用此方法。使用过程中主要有两个问题:

(1)loadData不能加载图片内容,如果想加载图片内容或者获得更强大的Web支持建议使用更强大的loadDataWithBaseURL.

(2) 许多实用loadData方法的朋友都遇到显示乱码的问题,那是因为编码器设置错误导致的。我们知道String类型的数据主要是unicode编码,而WebView一般为了节省资源使用的是UTF-8编码,所以我们在loadData的时候要告诉方法怎样转码。即要告诉它要将unicode编码的内容转成UTF-8编码的内容。有些朋友虽然在loadData的时候设置了编码方式,但是还是显示乱码,这是因为还需要为WebView的text编码指定编码方式。举例如下:

WebView wv = (WebView)findViewById(R.id.webview)

wv.getSettings().setDefaultTextEncodingName(“UTF -8”)

wv.loadData(content, “text/html”, “UTF-8”)

注意为gb2312或gbk

(3).网页说明编码格式

以上两种方法是网上给的比较好的方法,但是我都试了下都没有解决我的乱码问题。 原来我是用LoadData方法来解析html的,但是据说这是官方的一个BUG,不能用来解析中文。所以绕其道而行之,采用loadDataWithBaseURL的方法,其中codeingType设置为utf-8就OK了。3、loadDataWithBaseURL如果单纯显示文字的话可以写webView.loadDataWithBaseURL(null, string, "text/html", "utf-8", null)

如果要显示图片可以写webView.loadDataWithBaseURL(baseUrl, string, "text/html", "utf-8", null)

其中baseUrl为你存储照片的路径,比如:

首先查看weblogic使用的是什么编码,查看方式如下:

[html] view plaincopy

在severs/AdminServer/logs目录下的AdminServer.log中搜索file.encoding,会显示启动时使用的文件编码

看到weblogic使用的GB2312,这样就清楚了,需要修改weblogic的编码格式,修改方式如下:

[html] view plaincopy

在startWeblogic.sh中添加

${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} -Dweblogic.Name=${SERVER_NAME}

<span style="color:#33CC00"><strong>-Dweblogic.webservice.i18n.charset=utf-8</strong></span>Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy

${PROXY_SETTINGS} {SERVER_CLASS}

修改完成后,重启weblogic服务。

另:如何修改 *** 作系统的编码格式,在.bash_profile中添加如下:

[html] view plaincopy

export LC_ALL="zh_CN.UTF-8"

export LANG="zh_CN.UTF-8"

或者修改/etc/sysconfig/i18n文件,内容如下:

[html] view plaincopy

LANG="zh_CN.UTF-8"

SUPPORTED="zh_CN.UTF-8:zh_CN:zh"

SYSFONT="latarcyrheb-sun16"

这样使用locale查看到的信息如下:

[html] view plaincopy

LANG="zh_CN.UTF-8"

SUPPORTED="zh_CN.UTF-8:zh_CN:zh"

SYSFONT="latarcyrheb-sun16"

[root@asiainfo1 ~]# locale

LANG=zh_CN.UTF-8

LC_CTYPE="zh_CN.UTF-8"

LC_NUMERIC="zh_CN.UTF-8"

LC_TIME="zh_CN.UTF-8"

LC_COLLATE="zh_CN.UTF-8"

LC_MONETARY="zh_CN.UTF-8"

LC_MESSAGES="zh_CN.UTF-8"

LC_PAPER="zh_CN.UTF-8"

LC_NAME="zh_CN.UTF-8"

LC_ADDRESS="zh_CN.UTF-8"

LC_TELEPHONE="zh_CN.UTF-8"

LC_MEASUREMENT="zh_CN.UTF-8"

LC_IDENTIFICATION="zh_CN.UTF-8"

LC_ALL=zh_CN.UTF-8

Android中View是显示控件,需要用一个layout布局来装载,layout尺寸大写的设置如下:

1. 尽量使用wrap_content、match_parent、weight 来规定layout的大小。

2. 要确保布局的灵活性并适应各种尺寸的屏幕,应使用 “wrap_content” 和 “match_parent” 控制某些视图组件的宽度和高度。

3. 使用 “wrap_content”,系统就会将视图的宽度或高度设置成所需的最小尺寸以适应视图中的内容,而 “match_parent”(在低于 API 级别 8 的级别中称为“fill_parent”)则会展开组件以匹配其父视图的尺寸。

4. 如果使用 “wrap_content” 和 “match_parent” 尺寸值而不是硬编码的尺寸,视图就会相应地仅使用自身所需的空间或展开以填满可用空间。此方法可让布局正确适应各种屏幕尺寸和屏幕方向。

5. 如果某些地方必须要规定控件的大小,那么要使用dp 或者 dip单位。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7865418.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存