andylizi
本帖最后由 andylizi 于 2016-4-19 14:08 编辑
1.9服务器已修复这个bug,所以此问题只限于1.7.5-1.8.8服务器

正题
我的ColorMOTD插件在1.7.2服务器里,自动生成的配置文件:(版主别说我广告之类的……不举个梨子哪成)

我的ColorMOTD插件在1.8服务器里,自动生成的配置文件:

大概除了机器,只有鬼能看懂了。不止是我的ColorMOTD,所有的插件的配置文件里的中文全部都会变成这样。
现在我的ColorMOTD的发布贴有一堆反馈这问题的,各种看不懂
郁闷。1.7.5以前的服务器完全没这问题
于是经过我九九八十一天的追查,终于找到了罪魁祸首并将其逮捕归案

多了一行代码。
这就是原因。
【解决办法 - 对于插件开发者】

【解决办法 - 对于服主】

尘曲
{:10_553:}码字辛苦了。

RecursiveG
于是不得不继续面对编码问题,为了可读性放弃可移植性,
个人认为这种方式不可取。
(另一群人跑过来问你:本地配置好的服务端上传到服务器怎么不能跑了呀?)

1QAZ3EDCS
RecursiveG 发表于 2015-12-26 08:01
于是不得不继续面对编码问题,为了可读性放弃可移植性,
个人认为这种方式不可取。
(另一群人跑过来问你: ...

事实上转码还是很方便的= =
但是....中文全部变成U码是很痛苦的一件事..
每次我都要转换来转换去
麻烦程度可想而知
所以
给梨子赞一个
我是梨子的脑残粉~

andylizi
RecursiveG 发表于 2015-12-26 08:01
于是不得不继续面对编码问题,为了可读性放弃可移植性,
个人认为这种方式不可取。
(另一群人跑过来问你: ...

至少我解决了2333对于小白来说这是很头疼滴

云闪
RecursiveG 发表于 2015-12-26 08:01
于是不得不继续面对编码问题,为了可读性放弃可移植性,
个人认为这种方式不可取。
(另一群人跑过来问你: ...

话说google的common.io包里面貌似有编码判断的API,我知道这种判断不一定准,不过应该还是有用的,只是不知道好不好用,也不知道服务端核心文件里的common包有没有加进来这部分

andylizi
splt 发表于 2015-12-26 11:25
话说google的common.io包里面貌似有编码判断的API,我知道这种判断不一定准,不过应该还是有用的,只是不 ...

加了commons.io、codec和lang。话说这个编码跟unicode没关系,unicode严格来说又不是编码

云闪
andylizi 发表于 2015-12-26 13:25
加了commons.io、codec和lang。话说这个编码跟unicode没关系,unicode严格来说又不是编码 ...

他说的是可移植性,应该是说的编码问题吧?用你的方法解决中文变u码的问题,可移植性用这个解决,不知可以否

andylizi
splt 发表于 2015-12-26 13:56
他说的是可移植性,应该是说的编码问题吧?用你的方法解决中文变u码的问题,可移植性用这个解决,不知可 ...

我覆盖的DumperOptions类里面并没有任何跟编码有关系的内容

云闪
andylizi 发表于 2015-12-26 14:00
我覆盖的DumperOptions类里面并没有任何跟编码有关系的内容

嗯确实是这样……
那个人说可移植性应该是说Linux和Windows要上使用带中文的配置文件需要不同的编码吧?而没有中文的u码就能解决这个问题,或许这也是bukkit强制设为u码的原因?

他的意思是本地配好的服务端由于编码不同无法直接在服务器使用,那么我就想或许可以用判断编码的方式给配置文件自动转个码,解决这个问题?

Viosin
cauldron服主咋办QAQ

Viosin
Unicode转码网站:http://sandbox.runjs.cn/show/p0wqxbgx

andylizi
Viosin 发表于 2016-1-1 13:14
Unicode转码网站:http://sandbox.runjs.cn/show/p0wqxbgx

如果你喜欢编辑一次配置文件转码一次,请便

123mbcz123
强转我不反对。
你能不给我转错行么?
转完直接乱码[翻译成gbk]
我都不能汉化了!

andylizi
123mbcz123 发表于 2016-2-6 15:51
强转我不反对。
你能不给我转错行么?
转完直接乱码[翻译成gbk]

请问你在说啥啊我没听懂
另外为什么你不试试utf-8

123mbcz123
java.lang.NoSuchMethodError: org.yaml.snakeyaml.DumperOptions.getExplicitRoot()L
org/yaml/snakeyaml/nodes/Tag;
        at org.yaml.snakeyaml.Yaml.dumpAll(Yaml.java:262)
        at org.yaml.snakeyaml.Yaml.dumpAll(Yaml.java:234)
        at org.yaml.snakeyaml.Yaml.dump(Yaml.java:209)
        at org.bukkit.configuration.file.YamlConfiguration.saveToString(YamlConf
iguration.java:40)
        at org.bukkit.configuration.file.FileConfiguration.save(FileConfiguratio
n.java:103)
        at org.github.paperspigot.PaperSpigotConfig.readConfig(PaperSpigotConfig
.java:98)
        at org.github.paperspigot.PaperSpigotConfig.init(PaperSpigotConfig.java:
62)
        at org.github.paperspigot.PaperSpigotConfig.<clinit>(PaperSpigotConfig.j
ava:40)
        at net.minecraft.server.v1_7_R4.ItemBucket.<init>(ItemBucket.java:18)
        at net.minecraft.server.v1_7_R4.Item.l(Item.java:114)
        at net.minecraft.server.v1_7_R4.DispenserRegistry.b(SourceFile:358)
        at net.minecraft.server.v1_7_R4.MinecraftServer.main(MinecraftServer.jav
a:821)
        at org.bukkit.craftbukkit.Main.main(Main.java:199)
paperspigot-1.7.10

123mbcz123
本帖最后由 123mbcz123 于 2016-2-6 16:53 编辑
andylizi 发表于 2016-2-6 15:55
请问你在说啥啊我没听懂
另外为什么你不试试utf-8

第一个。
把汉化文件放进去[gbk编码]
假设第一行为
name: 商店
自动转化结果为
name: "\u935f\u55d7\u7c35"
我很好奇。他是如何把两个字转化成3个字
\u935f\u55d7\u7c35转成gbk为 "鍟嗗簵"
然后就乱码了。。自动转换有问题。。手动转码没问题。
还有。按照你的方法替换报错了。。1。8.7没问题1.7.10报错。。
详见另一条留言uft-8 都试了多少遍



云闪
今天才想起来,去翻了api,FileConfiguration发现了SYSTEM_UTF,是在public final static修饰并在static块初始化的,我觉得吧_(:зゝ∠)_直接用反射去掉final修饰然后把值改了,就OK了= ̄ω ̄=

andylizi
splt 发表于 2016-2-12 18:33
今天才想起来,去翻了api,FileConfiguration发现了SYSTEM_UTF,是在public final static修饰并在static块 ...

似乎final static是无法修改的?@RecursiveG  

云闪
andylizi 发表于 2016-2-12 19:14
似乎final static是无法修改的?@RecursiveG

可以的,你field.setModifier把final修饰去掉就好了

914554688wyt
其实不打紧啊..  放进这玩意里去转一下就可以了

andylizi
914554688wyt 发表于 2016-2-14 10:25
其实不打紧啊..  放进这玩意里去转一下就可以了

你要不嫌麻烦我也无所谓233
对于开发者来说,用户第一是最重要的

X_mingyu
插件开发者一次性解决好多插件的U码也会累死的吧

芒果苦力怕
在启动程序后门加上-Dfile.encoding=UTF-8不就得了吗?
如:JAVA -Xmx256M -jar spigot-1.8.8.jar -Dfile.encoding=UTF-8

andylizi
芒果苦力怕 发表于 2016-3-21 10:15
在启动程序后门加上-Dfile.encoding=UTF-8不就得了吗?
如:JAVA -Xmx256M -jar spigot-1.8.8.jar -Dfile.e ...

这是控制“字符编码”,但unicode编码指的又不是。。别弄混了

芒果苦力怕
andylizi 发表于 2016-3-21 11:26
这是控制“字符编码”,但unicode编码指的又不是。。别弄混了

同是解决方法!

andylizi


UTF-8跟unicode是不一样的,utf-8指的是把字符编码为byte[]并把byte[]解码为字符的方式,然而unicode跟这个没有直接关系
例如:


我也不知道该怎么形容好了

对了,你的-Dfile.encoding=UTF-8有错误,jvm参数必须加在-jar前面,不然就变成了jar参数了

芒果苦力怕
andylizi 发表于 2016-3-21 11:33
UTF-8跟unicode是不一样的,utf-8指的是把字符编码为byte[]并把byte[]解码为字符的方式,然而unicode跟这 ...

难道不是解决方法吗?

andylizi
芒果苦力怕 发表于 2016-3-21 11:45
难道不是解决方法吗?

我说了utf-8跟unicode不一样,那你加上utf-8怎么可能解决unicode编码的问题?
你这人是不是跟我有仇,一边私信跟我扯一边回帖跟我扯

芒果苦力怕
andylizi 发表于 2016-3-21 11:47
我说了utf-8跟unicode不一样,那你加上utf-8怎么可能解决unicode编码的问题?
你这人是不是跟我有仇, ...

我记得我之前测试过
我用llinux主机的时候
编码UTF-8,不会出现unicode编码的问题
服务器版本是1.8.8

andylizi
芒果苦力怕 发表于 2016-3-21 12:17
我记得我之前测试过
我用llinux主机的时候
编码UTF-8,不会出现unicode编码的问题

好吧,不争了,你自己去windows环境下试试你的代码吧

芒果苦力怕
本帖最后由 芒果苦力怕 于 2016-3-21 12:24 编辑
andylizi 发表于 2016-3-21 12:18
好吧,不争了,你自己去windows环境下试试你的代码吧

嗯,你也可以去试试
@andylizi嗯,我去试(别生气哈)


haixing
弄了这个以后,我之前的插件config会自动变成中文的吗,还是会出现错误无法使用?需要把之前的config重新建一遍吗?

18278436235
spigot1.8替换完之后泵崩服 -

芒果苦力怕
---- Minecraft Crash Report ----
// Why did you do that?

Time: 16-4-19 上午3:42
Description: Exception in server tick loop

java.lang.NoSuchMethodError: org.yaml.snakeyaml.DumperOptions.getSplitLines()Z
        at org.yaml.snakeyaml.emitter.Emitter.<init>(Emitter.java:198)
        at org.yaml.snakeyaml.Yaml.dumpAll(Yaml.java:237)
        at org.yaml.snakeyaml.Yaml.dumpAll(Yaml.java:206)
        at org.yaml.snakeyaml.Yaml.dump(Yaml.java:181)
        at org.bukkit.configuration.file.YamlConfiguration.saveToString(YamlConfiguration.java:40)
        at org.bukkit.configuration.file.FileConfiguration.save(FileConfiguration.java:103)
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.saveConfig(CraftServer.java:272)
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.<init>(CraftServer.java:212)
        at net.minecraft.server.v1_8_R3.PlayerList.<init>(PlayerList.java:71)
        at net.minecraft.server.v1_8_R3.DedicatedPlayerList.<init>(SourceFile:14)
        at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:176)
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:525)
        at java.lang.Thread.run(Unknown Source)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- System Details --
Details:
        Minecraft Version: 1.8.8
        Operating System: Windows Server 2008 R2 (amd64) version 6.1
        Java Version: 1.8.0_73, Oracle Corporation
        Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
        Memory: 179200744 bytes (170 MB) / 245891072 bytes (234 MB) up to 954728448 bytes (910 MB)
        JVM Flags: 3 total; -Xmx1G -XX:+AggressiveOpts -XX:+UseCompressedOops
        IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
        CraftBukkit Information:
   Running: CraftBukkit version git-Spigot-5f38d38-9d7764c (MC: 1.8.8) (Implementing API version 1.8.8-R0.1-SNAPSHOT)
   Failed to handle CraftCrashReport:
java.lang.NullPointerException
        at net.minecraft.server.v1_8_R3.MinecraftServer.getOnlineMode(MinecraftServer.java:1285)
        at org.bukkit.craftbukkit.v1_8_R3.CraftCrashReport.call(CraftCrashReport.java:20)
        at net.minecraft.server.v1_8_R3.CrashReportSystemDetails.a(SourceFile:78)
        at net.minecraft.server.v1_8_R3.CrashReport.h(CrashReport.java:127)
        at net.minecraft.server.v1_8_R3.CrashReport.<init>(CrashReport.java:34)
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:577)
        at java.lang.Thread.run(Unknown Source)

        Profiler Position: N/A (disabled)
        Is Modded: Definitely; Server brand changed to 'Spigot'
        Type: Dedicated Server (map_server.txt)

替换完后开服,没开起来,就崩掉了,然后就生成了蹦服报告

andylizi
芒果苦力怕 发表于 2016-4-19 03:47
替换完后开服,没开起来,就崩掉了,然后就生成了蹦服报告

woc。。。难道每个服务端版本都升级一次snakeyaml吗。。。稍等,马上解决

芒果苦力怕
andylizi 发表于 2016-4-19 09:51
woc。。。难道每个服务端版本都升级一次snakeyaml吗。。。稍等,马上解决

好了吗?

andylizi

请发出你使用的服务端核心

芒果苦力怕
andylizi 发表于 2016-4-19 12:28
请发出你使用的服务端核心

http://pan.baidu.com/s/1dFnZziD

andylizi
芒果苦力怕 发表于 2016-4-19 13:26
http://pan.baidu.com/s/1dFnZziD

DumperOptions.rar (12.28 KB, 下载次数: 14)

andylizi
123mbcz123 发表于 2016-2-6 16:42
第一个。
把汉化文件放进去[gbk编码]
假设第一行为

报错已解决。重下

haixing
KC端核心里,怎么没这个文件,也没\yaml\snakeyaml

andylizi
haixing 发表于 2017-1-15 00:20
KC端核心里,怎么没这个文件,也没\yaml\snakeyaml

你不会打开了minecraft.server.jar吧

haixing
andylizi 发表于 2017-1-15 07:22
你不会打开了minecraft.server.jar吧

不是啊,你看

haixing
andylizi 发表于 2017-1-15 07:22
你不会打开了minecraft.server.jar吧

怎么办,难道是我有什么搞错了

刘在石
请问KC端怎么解决,代码也改了还是不行,代替文件也不行,因为服务端本体里没有那个文件。。

andylizi
刘在石 发表于 2017-1-21 16:15
请问KC端怎么解决,代码也改了还是不行,代替文件也不行,因为服务端本体里没有那个文件。。 ...

你不会打开了minecraft.server.jar吧

刘在石
andylizi 发表于 2017-1-21 16:33
你不会打开了minecraft.server.jar吧

真没有 = =

Innovators
即使替换了 还是会自动转码啊..
版本是1.8.8PaperSpigot

mcbbs2050
Thermos 模组服的核心文件里没有那个 \org\yaml\snakeyaml 目录,该肿么办呢?