05月16, 2020

uniapp框架H5端英文乱码问题

uniapp框架H5端英文乱码问题

最近项目使用 uniapp 开发一个 H5 程序,需要嵌入安卓APP,使用 WebView 形式加载。

问题描述

开发完成之后在电脑端预览的时候没有问题,一切正常,可以在手机的时候,页面上的英文字母不能正常显示,显示为一个 · ,好奇怪。之前都是中文乱码,这次竟然是英文乱码了。

查找原因

开始以为是安卓 WebView 的问题,于是新建一个页面,加载之后一看,显示一切正常。看来不是安卓的问题,还得看 uniapp 框架。

在测试了各种情况都不行之后,无意中发现页面中有一个按钮中的文字里是可以显示英文字母的。

<u-button type="success" shape="square" :ripple="true" @click="login">登录</u-button>

就是类似这样的, u-button 是一个组件。通过查看组件代码,并不断测试,发现是组件的 lang 属性决定了可以显示。

<button lang="en">test<button>


好了,问题解决了,只要在需要显示的元素上添加 lang 属性就可以了。

解决问题

可是,等等,这个 lang 属性有点面熟啊,这不是 html 文件开始的时候写的那个 lang='en' 属性嘛,那我们直接修改 index.html 文件不就行了。

打开项目的 index.html 文件,一看写的是 <html lang="zh-CN"> ,好了,替换一下就可以了,不用每个页面都添加了。
替换之后: <html lang="zh-CN">

uniapp 默认是提供的 index.htmlzh-CN 的,所以我们需要自定义 index.html 模版。

官方文档: 自定义 index.html 模版

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <title>
            <%= htmlWebpackPlugin.options.title %>
        </title>
        <script>
            document.addEventListener('DOMContentLoaded', function() {
                document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
            })
        </script>
        <link rel="stylesheet" href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css" />
    </head>
    <body>
        <noscript>
            <strong>Please enable JavaScript to continue.</strong>
        </noscript>
        <div id="app"></div>
        <!-- built files will be auto injected -->
    </body>
</html>


总结

修改 <html lang="en"> 即可。

本文链接:http://blog.guansixu.cn/post/uniapp-kuang-jia-H5-duan-ying-wen-luan-ma-wen-ti.html

-- EOF --

Comments