- 在BszxBmServiceImpl和BszxPayServiceImpl中增强字体检测逻辑,确保正确显示中文 - 调整macOS字体优先级,优先使用PingFang SC等系统字体- 添加多层字体回退机制,包括预定义字体、逻辑字体和错误提示 - 更新Dockerfile,安装文泉驿微米黑字体以支持中文显示- 添加中文乱码修复指南文档,提供三种修复方案和故障排查方法 - 创建fix-chinese-font.sh脚本,用于在运行中的容器内安装中文字体 - 删除不再使用的SQL脚本和证书检查脚本- 改进日志输出,提供更详细的字体加载信息和错误提示
126 lines
4.3 KiB
Bash
126 lines
4.3 KiB
Bash
#!/bin/bash
|
||
|
||
###############################################################################
|
||
# 捐款证书中文乱码修复脚本
|
||
# 用途:在运行中的Docker容器内安装中文字体
|
||
# 适用于:无法重新构建镜像的紧急情况
|
||
###############################################################################
|
||
|
||
set -e # 遇到错误立即退出
|
||
|
||
# 颜色输出
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# 容器名称(可根据实际情况修改)
|
||
CONTAINER_NAME="websoft-api-container"
|
||
|
||
echo -e "${GREEN}================================${NC}"
|
||
echo -e "${GREEN}中文字体修复脚本${NC}"
|
||
echo -e "${GREEN}================================${NC}"
|
||
echo ""
|
||
|
||
# 检查容器是否存在
|
||
echo -e "${YELLOW}步骤 1/6: 检查容器状态...${NC}"
|
||
if ! docker ps | grep -q "$CONTAINER_NAME"; then
|
||
echo -e "${RED}错误:容器 $CONTAINER_NAME 未运行!${NC}"
|
||
echo "当前运行的容器:"
|
||
docker ps --format "table {{.Names}}\t{{.Status}}"
|
||
echo ""
|
||
read -p "请输入正确的容器名称: " CONTAINER_NAME
|
||
if [ -z "$CONTAINER_NAME" ]; then
|
||
echo -e "${RED}容器名称不能为空,退出。${NC}"
|
||
exit 1
|
||
fi
|
||
fi
|
||
echo -e "${GREEN}✓ 容器正在运行${NC}"
|
||
echo ""
|
||
|
||
# 检查是否已安装字体
|
||
echo -e "${YELLOW}步骤 2/6: 检查是否已安装中文字体...${NC}"
|
||
if docker exec "$CONTAINER_NAME" fc-list :lang=zh 2>/dev/null | grep -q "WenQuanYi"; then
|
||
echo -e "${GREEN}✓ 中文字体已安装${NC}"
|
||
docker exec "$CONTAINER_NAME" fc-list :lang=zh
|
||
echo ""
|
||
read -p "是否重新安装?(y/N): " REINSTALL
|
||
if [[ ! "$REINSTALL" =~ ^[Yy]$ ]]; then
|
||
echo "跳过安装,退出。"
|
||
exit 0
|
||
fi
|
||
else
|
||
echo -e "${YELLOW}未检测到中文字体,开始安装...${NC}"
|
||
fi
|
||
echo ""
|
||
|
||
# 安装字体工具
|
||
echo -e "${YELLOW}步骤 3/6: 安装字体工具...${NC}"
|
||
docker exec -u root "$CONTAINER_NAME" sh -c "apk add --no-cache fontconfig ttf-dejavu wget" || {
|
||
echo -e "${RED}✗ 字体工具安装失败${NC}"
|
||
exit 1
|
||
}
|
||
echo -e "${GREEN}✓ 字体工具安装成功${NC}"
|
||
echo ""
|
||
|
||
# 下载中文字体
|
||
echo -e "${YELLOW}步骤 4/6: 下载文泉驿微米黑字体...${NC}"
|
||
echo "正在从GitHub下载(约10MB),请稍候..."
|
||
docker exec -u root "$CONTAINER_NAME" sh -c "
|
||
wget -O /tmp/wqy-microhei.ttc https://github.com/anthonyfok/fonts-wqy-microhei/raw/master/wqy-microhei.ttc 2>&1 | grep -E 'Connecting|Length|saved' || true
|
||
" || {
|
||
echo -e "${YELLOW}GitHub下载失败,尝试使用代理...${NC}"
|
||
docker exec -u root "$CONTAINER_NAME" sh -c "
|
||
wget -O /tmp/wqy-microhei.ttc https://ghproxy.com/https://github.com/anthonyfok/fonts-wqy-microhei/raw/master/wqy-microhei.ttc
|
||
" || {
|
||
echo -e "${RED}✗ 字体下载失败${NC}"
|
||
echo "请检查网络连接或手动下载字体文件。"
|
||
exit 1
|
||
}
|
||
}
|
||
echo -e "${GREEN}✓ 字体下载成功${NC}"
|
||
echo ""
|
||
|
||
# 安装字体
|
||
echo -e "${YELLOW}步骤 5/6: 安装字体文件...${NC}"
|
||
docker exec -u root "$CONTAINER_NAME" sh -c "
|
||
mkdir -p /usr/share/fonts/truetype/wqy && \
|
||
mv /tmp/wqy-microhei.ttc /usr/share/fonts/truetype/wqy/ && \
|
||
fc-cache -fv
|
||
" || {
|
||
echo -e "${RED}✗ 字体安装失败${NC}"
|
||
exit 1
|
||
}
|
||
echo -e "${GREEN}✓ 字体安装成功${NC}"
|
||
echo ""
|
||
|
||
# 验证安装
|
||
echo -e "${YELLOW}步骤 6/6: 验证字体安装...${NC}"
|
||
FONT_COUNT=$(docker exec "$CONTAINER_NAME" fc-list :lang=zh | wc -l)
|
||
if [ "$FONT_COUNT" -gt 0 ]; then
|
||
echo -e "${GREEN}✓ 中文字体验证成功!${NC}"
|
||
echo "已安装的中文字体:"
|
||
docker exec "$CONTAINER_NAME" fc-list :lang=zh
|
||
else
|
||
echo -e "${RED}✗ 字体验证失败${NC}"
|
||
exit 1
|
||
fi
|
||
echo ""
|
||
|
||
# 完成提示
|
||
echo -e "${GREEN}================================${NC}"
|
||
echo -e "${GREEN}修复完成!${NC}"
|
||
echo -e "${GREEN}================================${NC}"
|
||
echo ""
|
||
echo "后续步骤:"
|
||
echo "1. 不需要重启容器,字体已生效"
|
||
echo "2. 重新生成捐款证书即可看到效果"
|
||
echo "3. 如果仍有问题,请查看容器日志:"
|
||
echo " docker logs -f $CONTAINER_NAME"
|
||
echo ""
|
||
echo -e "${YELLOW}注意:${NC}"
|
||
echo "- 此修复方法在容器重启后会失效"
|
||
echo "- 建议后续使用更新后的Dockerfile重新构建镜像"
|
||
echo "- 详细文档请参考:docs/chinese-font-fix-guide.md"
|
||
echo ""
|