Windows创建的txt文档默认是ANSI编码,然而Nextcloud默认只有UTF-8编码,因此,当Nextcloud在线编辑由Windows上传的txt文档时,会显示乱码,本文介绍两种方法解决txt文件的乱码问题。
方法一 修改files_texteditor编辑器
在Nextcloud16(含)以前自带的txt编辑器是files_texteditor,之后便替换成了text编辑器,如果不喜欢则卸载后安装files_texteditor,然后按照以下方法修改。
编辑apps/files_texteditor/lib/Controller/FileHandlingController.php,找到如下代码(约101行):
$encoding = mb_detect_encoding($fileContents . 'a', 'UTF-8, WINDOWS-1252, ISO-8859-15, ISO-8859-1, ASCII', true);
加入对GB2312和GBK的支持:
$encoding = mb_detect_encoding($fileContents . 'a', 'UTF-8, GB2312, GBK, WINDOWS-1252, ISO-8859-15, ISO-8859-1, ASCII', true);
方法二 修改text编辑器
自Nextcloud17开始,自带的txt编辑器是text,如果选择继续使用该编辑器,则按照以下方法修改。
编辑apps/text/lib/Service/ApiService.php,找到如下代码(约121行):
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);
遗留问题
虽然本文解决了ANSI编码的txt文档在编辑时的乱码问题,但Nextcloud在预览中文文档时仍然显示为乱码,不知有没有高手能够解决该问题。
原创文章禁止转载:技术学堂 » Nextcloud文档编辑器中文显示乱码的解决方案