karlar
karlar
  • 发布:2021-09-08 15:23
  • 更新:2021-09-09 11:19
  • 阅读:944

【报Bug】web-view 加载本地html文件 中文显示的是乱码

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: Alpha

HBuilderX版本号: 3.2.6

手机系统: Android

手机系统版本号: Android 11

手机厂商: 华为

手机机型: HUAWEI 荣耀20s

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

承载页面

<template>  
    <view>  
        <!-- <web-view src="/hybrid/html/local.html"></web-view> -->  
        <web-view src="/hybrid/html/pay.html"></web-view>  
    </view>  
</template>

html页面代码

<!DOCTYPE html>  
<html>  
  <head>  
    <meta charset="utf-8" />  
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  
    <title>网络网页</title>  
    <style type="text/css">  
      .btn {  
        display: block;  
        margin: 20px auto;  
        padding: 5px;  
        background-color: #007aff;  
        border: 0;  
        color: #ffffff;  
        height: 40px;  
        width: 200px;  
      }  

      .btn-red {  
        background-color: #dd524d;  
      }  

      .btn-yellow {  
        background-color: #f0ad4e;  
      }  

      .desc {  
        padding: 10px;  
        color: #999999;  
      }  

      .post-message-section {  
        visibility: hidden;  
      }  
    </style>  
  </head>  
  <body>  
    <p class="desc">web-view 组件加载网络 html 示例。点击下列按钮,跳转至其它页面。</p>  
    <div class="btn-list">  
      <button class="btn" type="button" data-action="navigateTo">navigateTo</button>  
      <button class="btn" type="button" data-action="redirectTo">redirectTo</button>  
      <button class="btn" type="button" data-action="navigateBack">navigateBack</button>  
      <button class="btn" type="button" data-action="reLaunch">reLaunch</button>  
      <button class="btn" type="button" data-action="switchTab">switchTab</button>  
    </div>  
    <div class="post-message-section">  
      <p class="desc">网页向应用发送消息,注意:小程序端应用会在此页面后退时接收到消息。</p>  
      <div class="btn-list">  
        <button class="btn btn-red" type="button" id="postMessage">postMessage</button>  
      </div>  
    </div>  
    <script type="text/javascript">  
      var userAgent = navigator.userAgent;  
      if (userAgent.indexOf('AlipayClient') > -1) {  
        // 支付宝小程序的 JS-SDK 防止 404 需要动态加载,如果不需要兼容支付宝小程序,则无需引用此 JS 文件。  
        document.writeln('<script src="https://appx/web-view.min.js"' + '>' + '<' + '/' + 'script>');  
      } else if (/QQ/i.test(userAgent) && /miniProgram/i.test(userAgent)) {  
        // QQ 小程序  
        document.write(  
          '<script type="text/javascript" src="https://qqq.gtimg.cn/miniprogram/webview_jssdk/qqjssdk-1.0.0.js"><\/script>'  
        );  
      } else if (/miniProgram/i.test(userAgent) && /micromessenger/i.test(userAgent)) {  
        // 微信小程序 JS-SDK 如果不需要兼容微信小程序,则无需引用此 JS 文件。  
        document.write('<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"><\/script>');  
      } else if (/toutiaomicroapp/i.test(userAgent)) {  
        // 头条小程序 JS-SDK 如果不需要兼容头条小程序,则无需引用此 JS 文件。  
        document.write(  
          '<script type="text/javascript" src="https://s3.pstatp.com/toutiao/tmajssdk/jssdk-1.0.1.js"><\/script>');  
      } else if (/swan/i.test(userAgent)) {  
        // 百度小程序 JS-SDK 如果不需要兼容百度小程序,则无需引用此 JS 文件。  
        document.write(  
          '<script type="text/javascript" src="https://b.bdstatic.com/searchbox/icms/searchbox/js/swan-2.0.18.js"><\/script>'  
        );  
      } else if (/quickapp/i.test(userAgent)) {  
        // quickapp  
        document.write('<script type="text/javascript" src="https://quickapp/jssdk.webview.min.js"><\/script>');  
      }  
      if (!/toutiaomicroapp/i.test(userAgent)) {  
        document.querySelector('.post-message-section').style.visibility = 'visible';  
      }  
    </script>  
    <!-- uni 的 SDK -->  
    <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>  
    <script type="text/javascript">  
      // 待触发 `UniAppJSBridgeReady` 事件后,即可调用 uni 的 API。  
      document.addEventListener('UniAppJSBridgeReady', function() {  
        uni.postMessage({  
            data: {  
                action: 'message'  
            }  
        });  
        uni.getEnv(function(res) {  
            console.log('当前环境:' + JSON.stringify(res));  
        });  

        document.querySelector('.btn-list').addEventListener('click', function(evt) {  
          var target = evt.target;  
          if (target.tagName === 'BUTTON') {  
            var action = target.getAttribute('data-action');  
            switch (action) {  
              case 'switchTab':  
                uni.switchTab({  
                  url: '/pages/tabBar/API/API'  
                });  
                break;  
              case 'reLaunch':  
                uni.reLaunch({  
                  url: '/pages/tabBar/component/component'  
                });  
                break;  
              case 'navigateBack':  
                uni.navigateBack({  
                  delta: 1  
                });  
                break;  
              default:  
                uni[action]({  
                  url: '/pages/component/button/button'  
                });  
                break;  
            }  
          }  
        });  
        document.getElementById('postMessage').addEventListener('click', function() {  
          uni.postMessage({  
            data: {  
              action: 'message'  
            }  
          });  
        });  
      });  
    </script>  
  </body>  
</html>

bug描述:

【报Bug】web-view 加载本地html文件 中文显示的是乱码,使用官方给的示例也还是乱码

2021-09-08 15:23 负责人:DCloud_App_Array 分享
已邀请:
6***@qq.com

6***@qq.com

遇到相同的 同问 请大佬解决下

karlar

karlar (作者) - 一只程序猿

找到问题了,我的html文件是首先创建了一个.txt文件,然后再改成.html文件就报错了。在HX里面右键——新建文件——自定义文件创建的html文件写代码就好了

7***@qq.com

7***@qq.com

注意编码格式,最好不要用windowns自带编辑器打开

该问题目前已经被锁定, 无法添加新回复