之前提起过,咸鱼剑在阿里云轻量主机上架设了NextCloud网盘系统,用于日常存储需要跨设备使用的文件。2019年末,咸鱼剑将NextCloud 16升级到了17,又一次碰到了文本编辑器中文乱码的情况。本以为用16的解决方法就可以秒杀问题,却不曾想17更新了文本编辑器,APP从files texteditor改成text,一时无法解决。再后来咸鱼剑也反复查阅了text这个APP的文件,依然没有没有头绪。
因为疫情不能出门,在家无聊索性跑到外网搜索一番,希望能够找相关的解决方法,结果还真找到了,最后通过实际测试,问题成功解决。
和16的files texteditor问题一样,17的text同样是由于编码缺失造成的乱码,我们需要通过修改文件来填补编码缺失,进而完成中文的支持。在NextCloud 17网站根目录/apps/text/lib/Service
找到ApiService.php
并打开,定位到112行附近,找到以下代码:
return new FileDisplayResponse($file);
将这段代码修改为:
$fileContents=$file->getContent();
$encoding = mb_detect_encoding($fileContents . 'a', 'UTF-8,GB2312, GBK, WINDOWS-1252, ISO-8859-15, ISO-8859-1, ASCII', true);
if ($encoding === '') {
$encoding = 'ISO-8859-15';
}
$fileContents = iconv($encoding, 'UTF-8', $fileContents);
$file->putContent($fileContents );
return new FileDisplayResponse($file);
修改完成后保存文件,强制刷新一下NextCloud 17的页面,打开TXT文本,中文已经能够正常显示了。
至此,NextCloud 17文本编辑器的乱码问题成功解决。
今天更新到了NextCloud 18.0.3,发现使用的编辑器还是text,更新完成以后处于乱码状态,按照文章修改就可以恢复了。有空打算研究下TXT文本右边栏预览的乱码,看着是API生成图片,应该还是编码不全导致的

另外最近NextCloud更新频率好高啊
太好了,找了全网,都没解决,然后在您的网站留言,果然您亲自搞定了这个问题,太感激了!
不过还有一个插件叫notes也挺好用,我之前用安卓版的nextcloud notes软件(apk在这里,https://f-droid.org/en/packages/it.niedermann.owncloud.notes/)配合同步,现在问题是,通过web页面或者手机中nextcloud notes写东西,互相看都不乱码
但是一旦在windows下在nextcloud notes的文件目录 建立txt文档,然后不管是网页,还是手机app上看,都乱码,之前查貌似是说 Windows上建立的txt所用的编码 不能被notes这个插件很好识别啥的
我在想是不是跟您这篇文章里的情况是一样的,如果大神能修复这个,那nextcloud就完全完美了!
非常感谢
后面有空我去看看吧,最近家里老人出事了,没精力搞网盘了