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.html
是 zh-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">
即可。
Comments