开心一刻
正睡着觉,然后来了个电话
对方说:你好,方便面是吗
我愣了一下,以为是恶作剧
回了句:我不是,我是火腿肠!
就挂了电话
又躺了好一会,忽然琢磨过来......
不对呀,她好像说的是:你好,方便面试吗?
前提准备
项目中有这么一块业务
1、
这一环,是运维同事通过脚本实现的,所以我没去关注2、
这一环,是我实现的,稳定运行了很长一段时间了,一直没出问题中文乱码
直到有一天,
出现了异常信息:提示很明显,在目录
下,没有找到文件然后联系运维,让运维去看
的目录: 下,文件 是否存在运维的反馈是文件存在,还发了截图
并且把文件复制给我了
然后我将这个文件复制到
的 目录下, 能正常找到文件那问题出在哪?
问题排查
后面与同个运维同事沟通了下,了解了整个完整流程的细节:
其中
作为 ,其系统编码是作为 ,其系统编码是 (chcp 值 936 表示 GBK)
我在怀疑是不是
的问题?怎么验证了?
其实最简单的办法就是看一眼
目录 下是不是有中文名乱码文件即可奈何我认为我说清楚了,运维同事也认为他理解了
结果南辕北辙,我想看的是
的目录 ,运维给我看的却是 下的挂载目录关键是当时我没发现他给我的截图其实不是我想看的!
然后我就开始了我的线上环境模拟之旅
NFS 服务端
上搭建 服务器非常简单
1、安装
,执行 即可2、对客户端 IP 进行授权
编辑
,进行授权配置,例如表示要共享出去的目录,不存在则需要先创建:
表示客户端 IP 地址,说明共享给谁
表示授权列表, 表示客户端可以读写, 表示自动同步, 是什么含义,你们自己去查
涉及到目录的读写,需要对
配置合适的读写权限,方便演示就简单点:编辑好之后,使配置生效,执行命令:
3、启动
:开机启动:
4、防火墙放行
为了演示方便,直接关闭防火墙:
NFS 客户端
作为客户端,配置起来也很简单
1、安装 NFS 客户端
-> ->
,直接连续下一步,直到
如果在
上搭建 服务器,则上面三个框住的需要勾选上,然后进行我们目前是搭建客户端,这个地方可以不勾,下一步,来到
勾选上
,然后进行安装即可2、防火墙放行,为了演示方便,直接关闭防火墙
3、目录挂载
直接在
中执行:不出意外的话,挂载成功
此时,
会出现一个网络盘正常来讲,不会有红叉;不影响效果,先不纠结
同步
简单点模拟,直接在
上,往挂载盘(网络盘)写文件,文件名是:在
的挂载目录 看,中文没乱码,简直太正常了!但是,我们去
的目录 看下哦豁,换了个马甲,还真不认识了!
程序去找
,怎么找得到嘛乱码原因
这个时候基本能断定问题出在
,直接 下关键字: 就能找到答案根因就是:windows 内置的 nfs 支持的编码非常有限,不支持 utf-8
问题解决
去掉中文
既然中文有问题,那就干掉中文
和上游系统协商了下,文件名改成英文,中文乱码自然就不存在了
有小伙伴可能会有疑问:之前没有中文乱码问题?
其实你们心里应该有答案了,没错,就如你们所想:这块业务,之前一直没出现中文名的文件!
升级 window 系统
可以开启 ,来支持
具体可参考:一个小设置,让Win10 NFS正常显示中文UTF-8
注意看评论区,坑很多,不推荐这种方式
至于
系统的其他版本是否支持该配置,大家结合自己的系统去查阅第三方 NFS 客户端
ms-nfs41-client,人家搭建步骤写的很清楚了
换共享方案
就是其中之一,大家可以去查阅并实现
总结
1、
自带的 支持的编码非常有限,竟连 都不支持,会导致中文乱码问题2、沟通的时候,一定要清楚的表达自己的意图,要保证人家接收到的信息就是你要表达的信息
评论区