go语言fyne框架中文乱码解决方法

该代码示例展示了一个Go语言编写的初始化函数,用于在Fyne应用中设置中文字体,防止中文显示为乱码。函数通过查找系统中存在的特定中文字体文件(如msyh.ttf,simhei.ttf等),并设置环境变量FYNE_FONT来确保正确渲染中文文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单粗暴,一个初始化函数解决,直接上代码

 

函数代码:

func init() {
	//设置中文字体:解决中文乱码问题
	fontPaths := findfont.List()
	for _, path := range fontPaths {
		if strings.Contains(path, "msyh.ttf") || strings.Contains(path, "simhei.ttf") || strings.Contains(path, "simsun.ttc") || strings.Contains(path, "simkai.ttf") {
			os.Setenv("FYNE_FONT", path)
			break
		}
	}
}

 

整体代码:

package main

import (
	"os"
	"strings"

	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/widget"
	"github.com/flopp/go-findfont"
)

func init() {
	//设置中文字体:解决中文乱码问题
	fontPaths := findfont.List()
	for _, path := range fontPaths {
		if strings.Contains(path, "msyh.ttf") || strings.Contains(path, "simhei.ttf") || strings.Contains(path, "simsun.ttc") || strings.Contains(path, "simkai.ttf") {
			os.Setenv("FYNE_FONT", path)
			break
		}
	}
}

func main() {

	myApp := app.New()

	myWindow := myApp.NewWindow("中文")
	label := widget.NewLabel("汉字")

	myWindow.SetContent(label)

	myWindow.Show()
	myApp.Run()
}

 

评论区里有人报错的原因:

需要确保电脑里面有你要导入的那个字体,比如我要导入名为msyh.ttf的字体文件,我就要确保系统存放字体的目录中有这个字体文件。

如果那个字体文件不存在,自然就无法正常导入。

我的示例代码是在Windows10上试过的,可以成功运行,如果你用的MacOS或者Linux系列,需要把示例代码中对应导入msyh.ttf文件的补发替换为你系统里有的文件。

 

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值