免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7073 | 回复: 16
打印 上一主题 下一主题

[C++] linux下创建的文件的编码格式有什么决定? [复制链接]

论坛徽章:
5
戌狗
日期:2014-06-09 10:29:10酉鸡
日期:2014-12-01 16:05:27处女座
日期:2015-01-07 18:35:262015亚冠之水原三星
日期:2015-06-03 09:26:222015亚冠之布里斯班狮吼
日期:2015-06-15 10:53:54
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-12-25 16:28 |只看该作者 |倒序浏览
如题,系统、终端、vim?
或者是哪位提供一些资料参考一下
多谢

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
2 [报告]
发表于 2015-12-25 21:40 |只看该作者
回复 1# kaede_1

这个应该应该不是很复杂,首先系统不会强制用户的;用户登录的时候shell的rc文件里面就能设定LANG(你locale一下就能看见);终端应该不会决定,因为终端只是运行shell的工具;至于Vim,也可以在rc里面设定编码的,如果不设定的话,那可能Vim会去读你的环境变量,也就是你的shell的rc文件里面设定的值。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
3 [报告]
发表于 2015-12-25 21:49 |只看该作者
回复 1# kaede_1


    由应用自己决定。不过许多应用都是根据系统的语言设置决定默认采用什么编码。

论坛徽章:
5
戌狗
日期:2014-06-09 10:29:10酉鸡
日期:2014-12-01 16:05:27处女座
日期:2015-01-07 18:35:262015亚冠之水原三星
日期:2015-06-03 09:26:222015亚冠之布里斯班狮吼
日期:2015-06-15 10:53:54
4 [报告]
发表于 2015-12-29 21:13 |只看该作者
回复 2# fender0107401


    首先,多谢回复。
    我发现好像有点出入。单拿vim 创建文件,然后输入汉字,这时这个文件的编码方式如何确定,是怎样的顺序?
    vim中的LANG和locale中的LANG,还有/etc/sysconfig/i18n中LANG??

    上面是对vim创建文件来说的,那生成可执行程序中的fopen方式创建文件又是怎么样的?

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
5 [报告]
发表于 2015-12-30 09:06 |只看该作者
本帖最后由 fender0107401 于 2015-12-30 09:14 编辑

回复 4# kaede_1

> 单拿vim 创建文件,然后输入汉字,这时这个文件的编码方式如何确定,是怎样的顺序?

文字种类跟编码没有关系。

> vim中的LANG和locale中的LANG,还有/etc/sysconfig/i18n中LANG??

优先级别是:软件的选项(用户设定,可以写在.vimrc里面) > 用户的环境变量(如果用户没有设定,那么vim可能会去读环境变量) > 系统(用户登录的时候,shell会设定环境变量,设定的时候会读系统的某些设定,如果用户在shell的rc文件里面没有设定,那么shell可能会读系统环境变量设定)

> 上面是对vim创建文件来说的,那生成可执行程序中的fopen方式创建文件又是怎么样的?

vim也是可执行程序。

注:

1.我感觉创建的文件应该是没有编码的吧,你往里面写什么就是什么。编码是程序自己的事情,文件就是个存储的容器。

2.具体的我也不了解。

论坛徽章:
5
戌狗
日期:2014-06-09 10:29:10酉鸡
日期:2014-12-01 16:05:27处女座
日期:2015-01-07 18:35:262015亚冠之水原三星
日期:2015-06-03 09:26:222015亚冠之布里斯班狮吼
日期:2015-06-15 10:53:54
6 [报告]
发表于 2015-12-30 10:05 |只看该作者
回复 5# fender0107401

1.下面是~/.vimrc 的部分配置
  1. syntax on

  2. filetype plugin indent on
  3. colorscheme desert
  4. set fencs=utf-8,gb18030
  5. set nonu
  6. set encoding=cp936
  7. set langmenu=zh_CN.UTF-8
  8. language message zh_CN.UTF-8
  9. set termencoding=cp936
  10. set fileencodings=utf-8,cp936,gb2312
复制代码
2.下面是locale命令的显示
  1. root@b01 ~> locale
  2. LANG=zh_CN.GBK
  3. LC_CTYPE="zh_CN.GBK"
  4. LC_NUMERIC="zh_CN.GBK"
  5. LC_TIME="zh_CN.GBK"
  6. LC_COLLATE="zh_CN.GBK"
  7. LC_MONETARY="zh_CN.GBK"
  8. LC_MESSAGES="zh_CN.GBK"
  9. LC_PAPER="zh_CN.GBK"
  10. LC_NAME="zh_CN.GBK"
  11. LC_ADDRESS="zh_CN.GBK"
  12. LC_TELEPHONE="zh_CN.GBK"
  13. LC_MEASUREMENT="zh_CN.GBK"
  14. LC_IDENTIFICATION="zh_CN.GBK"
  15. LC_ALL=
复制代码
3.下面是i18n的内容
  1. cat /etc/sysconfig/i18n
  2. LANG="en_US.UTF-8"
  3. SUPPORTED="en_US.UTF-8:en_US:en"
  4. SYSFONT="latarcyrheb-sun16"
复制代码
请问我用vim创建文件后显示的应该是什么格式?

测试用vim打开文件,在命令模式下输入:set fileencoding 返回信息如下:
fileencoding=cp936
因此可以得出vim创建的格式是由encoding=cp396这一行决定的

而通过file命令查看含中文的文件时,显示如下:
  1. file zhongwen
  2. zhongwen: ISO-8859 text
复制代码
通过file命令查看仅含字符的文件时如下:
  1. file test_ch
  2. test_ch: ASCII text
复制代码
请问这是怎么回事?多谢哈!

论坛徽章:
5
戌狗
日期:2014-06-09 10:29:10酉鸡
日期:2014-12-01 16:05:27处女座
日期:2015-01-07 18:35:262015亚冠之水原三星
日期:2015-06-03 09:26:222015亚冠之布里斯班狮吼
日期:2015-06-15 10:53:54
7 [报告]
发表于 2015-12-30 10:12 |只看该作者
回复 5# fender0107401


    另外,关于fopen的操作,还有个疑问:
    假如vimrc设置的编码格式是1,而系统环境变量的编码格式是2,以1,2作为标识。
    那么,用vim创建的文件,编码格式应该是1;而通过fopen形式创建的文件格式应该是2。不知这么理解是否可以?

论坛徽章:
5
戌狗
日期:2014-06-09 10:29:10酉鸡
日期:2014-12-01 16:05:27处女座
日期:2015-01-07 18:35:262015亚冠之水原三星
日期:2015-06-03 09:26:222015亚冠之布里斯班狮吼
日期:2015-06-15 10:53:54
8 [报告]
发表于 2015-12-30 10:21 |只看该作者
回复 5# fender0107401


    另外,对于fopen的方式。假设目前系统环境变量的编码格式为1,而vimrc中配置的编码格式为2;那么通过vim创建文件的格式应该是2,而通过fopen方式创建的文件格式是1?
不知道这样理解有问题吗?

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
9 [报告]
发表于 2015-12-30 10:39 |只看该作者
回复 8# kaede_1

fopen创建的文件应该是没有编码的,你往里面写的数据是有编码的。我感觉是这样,不过没测试过。


   

论坛徽章:
5
戌狗
日期:2014-06-09 10:29:10酉鸡
日期:2014-12-01 16:05:27处女座
日期:2015-01-07 18:35:262015亚冠之水原三星
日期:2015-06-03 09:26:222015亚冠之布里斯班狮吼
日期:2015-06-15 10:53:54
10 [报告]
发表于 2015-12-30 13:23 |只看该作者
。。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP