RT,本人初学数据包的输出型function,在function文件内编写了带有Unicode字符的函数,执行时,所有Unicode字符被执行为乱码。如下图所示:

该条预计执行效果如下图所示:

该条函数内容为:
复制代码与组内技术大佬交流后,对方提出使用“强制使用Unicode”,打开后并无任何影响,仍输出为乱码。
查阅部分资料后(非权威),提到要使用Unicode码,但使用Unicode密文后,输出时即输出密文而不翻译。
故现求:
帮助我找到为何function文件中tellraw无法正常输出,如果问题出现在function代码上,请提供解决后的代码;如果问题出现在游戏上,请提供解决方案。
基本信息:
游戏版本1.14.4,搭载自制可用的数据包。Log文件中执行后只出现“ [CHAT] ?????????? ”行,且非报错信息。
万分感谢!

该条预计执行效果如下图所示:

该条函数内容为:
- tellraw @p [{"text":"您已安装成功数据包!","color":"aqua","bold":false,"italic":true,"underlined":true,"strikethrough":false,"obfuscated":false}]
查阅部分资料后(非权威),提到要使用Unicode码,但使用Unicode密文后,输出时即输出密文而不翻译。
故现求:
帮助我找到为何function文件中tellraw无法正常输出,如果问题出现在function代码上,请提供解决后的代码;如果问题出现在游戏上,请提供解决方案。
基本信息:
游戏版本1.14.4,搭载自制可用的数据包。Log文件中执行后只出现“ [CHAT] ?????????? ”行,且非报错信息。
万分感谢!
本帖最后由 ruhuasiyu 于 2021-4-27 23:14 编辑
你的函数文件编码需要设置为utf8无bom
日志文件设置为gb2312才能正确显示中文
用vscode来编写可以方便地转换编码
你的函数文件编码需要设置为utf8无bom
日志文件设置为gb2312才能正确显示中文
用vscode来编写可以方便地转换编码
ruhuasiyu 发表于 2021-4-27 15:11
你的函数文件编码需要设置为utf8无bom
日志文件设置为gb2312才能正确显示中文
函数文件编码时使用的就是Unicode-8(因为还有一个选项是“Unicode-8-BOM”,所以我认为我选择的就是无Bom的utf8),编码设置问题排除。
另外我是因为报错才看的日志,而日志里面的问号都是ANSI编码下的半角符号,不是Unicoede在ANSI下无法编译后被替换的内容。
(我用Notepad++和vscode应该差不太多吧……)
希望追答,不过还是十分感谢!
ruhuasiyu 发表于 2021-4-27 23:11
你的函数文件编码需要设置为utf8无bom
日志文件设置为gb2312才能正确显示中文
为啥bom会影响非ascii字符呢?
使用UTF8无BOM暂时没有遇到这类问题。不过作为一个替代方案,可以使用\uXXXX的方式来编码Unicode字符(就像官方语言包中的一样)。例如题干中的文本就可以使用"\u60a8\u5df2\u5b89\u88c5\u6210\u529f\u6570\u636e\u5305\uff01"替代。
A🐭💣 发表于 2021-4-28 12:25
函数文件编码时使用的就是Unicode-8(因为还有一个选项是“Unicode-8-BOM”,所以我认为我选择的就是无Bo ...
不行你就把数据包发一下吧
xwjcool123 发表于 2021-4-28 07:40
使用UTF8无BOM暂时没有遇到这类问题。不过作为一个替代方案,可以使用%uXXXX的方式来编码Unicode字符(就像 ...
……我不太能明白你说的unicode是怎样工作的,但是我用\u代替时会显示明文(即会显示\uxxxx,而不是翻译后的unicode文本),所以这个方法暂时无解
那你发一下这个函数文件
ruhuasiyu 发表于 2021-4-27 15:06
你的函数文件编码需要设置为utf8无bom
日志文件设置为gb2312才能正确显示中文
重启了一下游戏,把编码从UTF8转到ANSI又转回来,再执行就好使了……真是个神奇的特性,我估计得写进注意事项里面了
不过还是谢谢你