最近发现MVC在Linux的上传中文文件, 使用 ls命令查看文件名显示乱码.

几经周折,经历了:文件名编码转换,指定web的contentype编码等,最终然并卵.

Google上查到这个

http://www.mono-project.com/docs/faq/technical/

内容如下:

MONO_EXTERNAL_ENCODINGS

When I run an application, I get the following error message:

** Message: Bad encoding for '????'
Consider using MONO_EXTERNAL_ENCODINGS

This problem arises when you have files in your file system that Mono can not convert into Unicode. Mono uses the UTF-8 encoding for the filenames stored in your file system by default, because it is the universally accepted standard.

The problem typically arises when you transfer files that were stored on a system that used a different encoding. This might happen if you copy a backup from an older system that encoded filename is latin-1 encoding and your current system uses UTF-8 (Example: the old system probably had LANG set to “en_US” and the new system uses “en_US.UTF-8).

It is highly recommended that you fix the encoding of your filenames on your file system using a tool like convmv, a perl utility that lets you rename files from one encoding to another.

Alternatively, you can set the MONO_EXTERNAL_ENCODINGS variable, but this is not recommended. To use this set the MONO_EXTERNAL_ENCODINGS variable to a comma separated list of encodings that the Mono runtime should try to use when guessing the values encoded in a filename.

See the manual page for details on how Mono uses this variable.

The values allowed are those returned by “iconv –list”.

This is a sample:

export MONO_EXTERNAL_ENCODINGS="utf8:latin1"

Notice that in older versions of Mono, the error message had a typo, and said “MONO_EXTERNAL_ENCODING” instead of “MONO_EXTERNAL_ENCODINGS”

The problem with using MONO_EXTERNAL_ENCODINGS is that even if Mono will be able to parse your filenames, Mono will still store the filenames internall as Unicode. If you try to move, overwrite or do any other manipulation in the file Mono will transform the filename from Unicode to your native encoding and it might fail to find the file.

通过export命令查看全局设置,里面并没有 MONO_EXTERNAL_ENCODINGS的配置.

有陷入了僵局.

周末继续折腾,写了控制台程序创建文件发现中文文件名并无问题,说明mono自生并无问题,

重点放在Jexus上, 遂写了个最简单的web上去创建文件,问题重现.

继续搜索资料 鄙视下百度根本查不到.

找到 张善友的一篇文章

http://www.cnblogs.com/shanyou/archive/2012/01/07/2315982.html

让jexus能够读取中文乱码文件名 1、安装GBK等字符集: 步骤一:修改:/var/lib/locales/supported.d/local文件,添加一行,内容是“zh_CN GBK”。(当然,还可以加上“zh_CN GB18030”等); 步骤二:运行命令  sudo locale-gen 2、在jws.start和jws.restart两个文件中,添加一个环境变量:“export  MONO_EXTERNAL_ENCODINGS="gbk:gb18030"”
注:以上方法适用于jexus 5.2

这段话提醒了我.

啥 Jexus有MONO_EXTERNAL_ENCODINGS的配置.

遂,组不查找,jwsd,jws 啥找到了

jws 中有句:

export MONO_EXTERNAL_ENCODINGS="gbk:gb18030:gb2312"

注释掉试试.

发现注释了,重启Jexus,中文名正确了.

赶紧试试 修改成加上utf8如下:

export MONO_EXTERNAL_ENCODINGS="utf8:gbk:gb18030:gb2312"

测试也ok.

为何Jexus默认安装添加了这个配置, 等Jexus的作者 宇内流云 解释,估计是处于其他什么考虑.

顺便看到5.2的发布说明:

与5.1相比,Jexus5.2有如下变化:
1、修复了5.1发布以来发现的所有BUG;
2、为FastCGI、反向代理增加了对“多重Cookie”的支持;
3、增加了对响应数据进行“分块传输”的支持;
4、增加了正常读取中文乱码文件名(windows文件复制到linux系统上后中文文件名成为乱码)的支持;
5、为ASP.NET开放了开放HTTP OPTIONS/PUT/DELETE协议,为“RESTful Web API”的正常运行提供了平台基础;
6、对线程池控制、应用程序域域间数据传递方式进行了改进,性能特别是ASP.NET的处理速度得到大幅度提升(静态文件处理速度提高了5%,ASP.NET处理速度提高了40%)。

不知是否与4有关.

转载于:https://www.cnblogs.com/crazybird/articles/4714100.html

Mono 基于Jexus发布,创建中文文件名乱码及解决办法相关推荐

  1. php excel中文名称乱码,phpexcel导出中文文件名乱码的解决办法

    使用phpexcel类库导出excel文件,文件名为中文时,在chrome浏览器下导出正常,在IE内核浏览器下导出文件名显示乱码,解决办法就是通过iconv函数转换编码,从utf-8转为gb2312, ...

  2. C# SharpZipLib 压缩中文文件名乱码的解决办法(必看 实测有用)

    解压zip 文件名乱码问题: 1.检查zip中文件是否已经乱码了(是不是压缩zip的时候就有问题) 2.直接上代码:直接copy code /// <summary>         // ...

  3. ubuntu下文件名乱码的解决办法

    ubuntu下文件名乱码的解决办法 (2012-11-30 11:38:49) 转载▼ 标签: 终端 ubuntu it 分类:系统问题 ubuntu下文件名乱码的解决办法       最近一直在用u ...

  4. redhat enterprise 5 在 VMware 6.5 中中文显示乱码的解决办法

    redhat enterprise 5 在 VMware 6.5 中中文显示乱码的解决办法 事情的经过是这样的 记得以前曾经在VMware 5.5.3 上装过redhat 估计是9吧 当初我选的是图形 ...

  5. linux服务器文件名称乱码,linux中文文件名乱码怎么解决?

    由于安装英文版的系统不支持中文,出现中文文件名乱码. 下面操作时在centos上安装中文支持: 1)先下载并安装两个语言包: fonts-chinese-3.02-12.el5.noarch.rpm ...

  6. 附件下载,中文文件名乱码如何解决???

    问: 我写了个程序,里面有文件要作为附件下载,英文文件名都正常,但中文文件名就会乱码,不知道如何解决,望高手指点. 代码如下: ============================= Respon ...

  7. php实现 iso 下载文件,下载文件时safari上中文文件名乱码的处理办法(php代码实现)...

    php一段代码,处理文件下载时的文件名,后来客户反馈说firefox,safari下的中文文件名不能正常显示. $file_info['title'] = rawurlencode($file_inf ...

  8. 百度地图api公交路线,IE下跳转百度地图后中文变成乱码的解决办法

    百度开放的公交路线的链接,IE跳转会出现中文变成乱码的问题.如图: //创建InfoWindow function createInfoWindow() { var desDiv = []; desD ...

  9. vsftpd中文目录乱码的解决办法

    搭建vsftpd服务器时,如果/vat/ftp/pub下有中文目录,客户端往往或出现乱码的情况.这是因为服务端和客户端字符编码格式不一致所造成的.解决办法如下(本文是以UTF-8为例,如果用的是别的字 ...

  10. ueeditor无法上传图片_ueditor上传图片中文文件名失败的解决办法

    ueditor是一个非常不错的在线html编辑器,作为百度的产品,在百度贴吧等应用中广泛应用,经受了时间和用户的考验,功能,性能和稳定性来说都是不错的.太仓人才网目前正在测试将原有的html编辑器替换 ...

最新文章

  1. 移动硬盘插入提示格式化
  2. php替换时 css中的图片不显示不出来,URL重写:CSS,JS和图像未加载
  3. 独家 | 数据科学家指南:梯度下降与反向传播算法
  4. 织梦自定义图片字段和缩略图一样_DedeCMS系统自定义字段的图片调用
  5. delphi中Label中文显示不全的问题解决办法
  6. Vue项目开发过程中解决跨域问题(vue.config.js结合axios)
  7. java 监听桌面鼠标事件,鼠标事件的监听和使用
  8. 25. PE结构-PE详解之资源
  9. Linux的gcc编译器下载,gcc编译器下载
  10. inventor中齿条怎么画_渐开线齿轮是怎么回事,图解6种齿轮加工工艺
  11. HDFS异常:last block does not have enough number of replicas
  12. java将模糊的图片变清晰_java高清图生成缩略图变得模糊
  13. 关于射频技术在粮食安全的科研进展
  14. 查询用户活跃度表登录间隔30天的用户
  15. python+flask项目实战开发
  16. Linux应急响应之挖矿篇
  17. [UNR #6]稳健型选手
  18. 有关国内的流氓软件和强制安装软件(上传附件防部分流氓软件)
  19. 金蝶K3与AUTOCAD2007兼容性,打开金蝶K3时候提示配置问题
  20. Python之matplotlib工具包使用入门——绘制简单图表

热门文章

  1. QCustomplot使用分享(一) 能做什么事
  2. php 打印debug日志
  3. Windows下一个MySQL有些错误的解决方法
  4. 桌面支持--dcc打印机设置注意
  5. 从金钱社会向财富第三极的过渡方案
  6. 旅游后台管理系列——SSM框架Dao层整合
  7. 在mininet中测试TCP、UDP带宽并作图
  8. html怎么隐藏信息,3.2.5 在HTML文件中隐藏信息
  9. python语言程序设计期末试卷_Python语言程序设计17182试题题目及答案,课程2020最新期末考试题库,章节测验答案...
  10. devexpress.xtraeditors.xtraform 类型初始值设定_远程智能电表的常见类型推荐--老王说表...