之前提起过,咸鱼剑在阿里云轻量主机上架设了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文本,中文已经能够正常显示了。

  还有种思路是将text这个APP禁用,安装NextCloud 16里的files texteditor并按照NextCloud 16的解决方法完成编码的填补,也能达到目的,但目前咸鱼剑没做测试,具体可行性有待商榷。
  至此,NextCloud 17文本编辑器的乱码问题成功解决。

-THE END-
最后修改:2020 年 02 月 09 日 12 : 38 AM
如果觉得我的文章对你有用,请随意赞赏