Windows和Unix下的编码问题

今天测试shell脚本时,执行报错:

./report.sh: /tmp/tmp.E8ekx6r5Qq/report.sh: /bin/bash^M: bad interpreter: No such file or directory

找半天原因,结果发现是Windows和Unix下的编码问题,不兼容

在Linux下用vi编辑文本,在命令模式下用命令set ff=Unix  ,问题就解决了。

Linux下测试经常会遇到这种情况,报错 ^M的一般就是编码问题解析不了。

时间: 2024-10-08 17:19:28

Windows和Unix下的编码问题的相关文章

getch 和 getchar 在 windows 和 unix下的区别

注意getch()是从console读取,(非标准函数) getch()需要的头文件是<conio.h>. 而getchar()是从stdin,一般是指键盘 windows平台下ENTER键会产生两个转义字符 \r\n, \r : 回到开头的地方. \n : 去到下一行开头 因此,getch()读到 \r 时就会返回他的ASCII码13.(后面的被无视了) 奇怪的问题是为什么getchar()会返回10呢? 前面不是说过返回第一个字符吗? 这的确会让人费解.实际上产生这个结果的原因是, get

在Windows和UNIX下利用PHP和LDAP进行身份验证

我现在的老板曾要求我为企业内部的Web服务提供一种标准的身份验证方法.我遇到的一个主要问题就是我们公司主要使用了两种平台:UNIX和.所以,我的第一个想法并不很成功:它要求每个员工都使用UNIX或者Linux而放弃. 我认为解决现在的UNIX/Windows问题的最好方法就是利用PHP的LDAP特性.由于LDAP,要求我使用现有的系统,主要指的是一个巨大的 Microsoft Exchange Server系统.我非常高兴使用Exchange,它很可靠,而且LDAP特性的使用和配置也极为简单.不

otl库(以前不知道有这个库,并且还可以在Unix下使用)

OTL介绍:OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++编译中操控关系数据库的模板库,它目前几乎支持所有的当前各种主流数据库,例如Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS等等.OTL中直接操作Oracle主要是通过Oracl

Windows下字符编码转换

有时候经常使用别人用Tabhost+其它的实现demo.单纯利用Tabhost该如何使用呢? 下面看例子: public class MainActivity extends TabActivity { public TabHost tabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 获取对象 tabHost = getTabH

windows下文件编码和读写注意

最近写了一个小工具,主要实现自动搜索指定路径下所有文本文件内容,并替换指定字符串,记录下几个容易犯错误的地方. 1,fread读出来的buffer存放到string里,如果要搜索指定的字符串,比如"中华人民共和国",首先要确定文件的编码格式是什么?根据文件的编码格式,对目标串进行编码转换后,才能用string.find去进行查找. 而如何判断文件的编码格式呢,windows下文本文件一般有两种字符集,unicode和gbk,根据文件的前三个字节来决定该文件的编码格式,这三个字节是 &q

Windows 和 Linux 中的换行与回车的区别,Windows下编写的Shell脚本,直接放到linux/unix下执行会报错

首先: CR(Carriage Return)表示回车 LF(Line Feed)表示换行 Dos和Windows采用回车+换行(CR+LF)表示下一行而UNIX/Linux采用换行符(LF)表示下一行苹果机(MAC OS系统)则采用回车符(CR)表示下一行 Windows下编写的Shell脚本,直接放到linux/unix下执行会报错,就是因为行结束符不一样导致的. 现在好多文本工具都提供了转换功能,如我常用的,也是最强大的工具 (个人感受,不是打广告):notepad++. 原文地址:htt

MySQL数据库在WIN系统CMD下的编码问题

MySQL数据库在WIN系统CMD下的编码问题 1. 查看MySQL数据库编码 * SHOW VARIABLES LIKE 'char%'; 2. 编码解释 * character_set_client:MySQL使用该编码来解读客户端发送过来的数据,例如该编码为UTF8,那么如果客户端发送过来的数据不是UTF8,那么就会出现乱码 * character_set_results:MySQL会把数据转换成该编码后,再发送给客户端,例如该编码为UTF8,那么如果客户端不使用UTF8来解读,那么就会出

Linux,Windows,Mac OS下换行的不同表示

一开始用Liunx进行编程,最近把学编程的平台转移到Mac上.在这其间就出现一些问题,特别是换行符的问题.在使用scanf等输入/输出函数时,在进行换行时就无法出现预期的换行效果. 原来,在三个主流平台上,换行符的表示是不一样的. Unix系统里,每行结尾只有“<换行>”,即“\n”. Windows系统里面,每行结尾是“<回车><换行>”,即“\r\n”. Mac系统里,每行结尾是“<回车>”,即“\r”. 这种情况下,Unix/Mac系统下的文件在Win

Windows 和 Linux下使用socket下载网页页面内容(可设置接收/发送超时)的代码

主要难点在于设置recv()与send()的超时时间,具体要注意的事项,请看代码注释部分,下面是代码: [cpp] view plaincopyprint? #include <stdio.h> #include <sys/types.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <string.h> #ifdef _WIN32   ///