WebView 加载html富文本,中文乱码

在真机调试的时候遇到一个问题:
之前用WebView加载html文本的时候,使用的方式:
mWebViewDes.loadData(Html.fromHtml(des).toString(), “text/html”, “UTF-8”);
在华为note8上中文正常显示,
在华为nova2上测试,发现同样的代码在这里出现了乱码
百度搜索发现需要使用下面的方法:
mWebViewDes.loadData(Html.fromHtml(des).toString(), “text/html; charset=UTF-8”, null);

经测试,两边真机均正常显示中文。

================ 2019-09-20补充 ================
使用TextView加载富文本(包含图文)
代码如下(Kotlin写法):
在这里插入图片描述

 tvHtml.text = Html.fromHtml(contentHtml, Html.FROM_HTML_MODE_COMPACT, Html.ImageGetter { source ->
                    Thread(Runnable {
                        mDrawable.addLevel(0, 0, resources.getDrawable(R.mipmap.ic_launcher))
                        mDrawable.setBounds(0, 0, 200, 200)

                        val bitmap: Bitmap
                        try {
                            bitmap = BitmapFactory.decodeStream(URL(source).openStream())
                            val msg = handler.obtainMessage()
                            msg.what = HANDLER_MESSAGE
                            msg.obj = bitmap
                            handler.sendMessage(msg)
                        } catch (e: Exception) {
                            e.printStackTrace()
                        }
                    }).start()
                    mDrawable
                }, null)

在这里插入图片描述

private val handler = @SuppressLint("HandlerLeak")
    object : Handler() {
        override fun handleMessage(msg: Message) {
            if (msg.what === HANDLER_MESSAGE) {
                val bitmap = msg.obj as Bitmap
                val drawable = BitmapDrawable(null, bitmap)
                mDrawable.addLevel(1, 1, drawable)
                mDrawable.setBounds(0, 0, bitmap.width, bitmap.height)
                mDrawable.level = 1

                val charSequence = tvHtml.text
                tvHtml.text = charSequence
                tvHtml.invalidate()
            }
        }
    }

说明:
要显示图片需要通过Html.ImageGetter
因为图片是一个URL所以需要下载,是耗时的操作,所以这里开了个子线程进行下载,通过Handler在主线程进行更新文本。参考自:https://www.kaelli.com/21.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值