Nextcloud文档编辑器中文显示乱码的解决方案

Windows创建的txt文档默认是ANSI编码,然而Nextcloud默认只有UTF-8编码,因此,当Nextcloud在线编辑由Windows上传的txt文档时,会显示乱码,本文介绍两种方法解决txt文件的乱码问题。

方法一 修改files_texteditor编辑器

修改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编辑器

修改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文档编辑器中文显示乱码的解决方案

精彩评论

4+6=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏