java 保存文件ansi_文本文件保存为ANSI格式

//先转码,然后写文件就行了 C/C++代码

//先读取Unicode文件然后再转成Ansi数据流供程序处理(不转换则将中间转换的处理//删除

直接返回pwbBuffer数据)

bool GetFileData(const char* filePath,PBYTE& sourValue)

{

char

isUnicode[2];//专用于判断是否unicode文件

DWORD

fileLen; //文件长度

DWORD

dwCount; //实际读取出的数据量

FILE

*hSource; //文件

if

(!(hSource=fopen(filePath,_T("rb"))))

{

return false;

}

fseek(hSource,0,SEEK_END);

fileLen=ftell(hSource);

fseek(hSource,0,SEEK_SET);

//判断文件类型(ANSI或UNICODE)

fread(isUnicode, 1, 2, hSource);

fseek(hSource,0,SEEK_SET);

//UNICODE格式

if(

isUnicode[0] == '\xff' && isUnicode[1] == '\xfe')

{

fseek(hSource,2,SEEK_SET);//跳过两个字节Unicode标识再处理

LPWSTR pwbBuffer=new WCHAR[fileLen];

dwCount = fread(pwbBuffer, 1, fileLen, hSource);

if(ferror(hSource))

{

return false;

}

//Unicode转换Ansi处理(适用于一般性文本)

//----------------

DWORD dwNum =

WideCharToMultiByte(CP_OEMCP,NULL,pwbBuffer,-1,NULL,0,NULL,FALSE);//计算要使用空间

dwCount=dwNum;//unicode返回的值要是转换后的大小

if(!(sourValue = (BYTE *)malloc(dwNum)))

{

return false;

}

WideCharToMultiByte

(CP_OEMCP,NULL,pwbBuffer,-1,(PCHAR)sourValue,dwNum,NULL,FALSE);

//---------------

delete[] pwbBuffer;

}

else

{

//...........Ansi处理

}

fclose(hSource);

return

true;

}

//C语言把汉子转成Unicode格式 调用了WindowsAPI WideCharToMultibyte

MultiByteToWideChar

//光是unicode就有好几个标准:utf8、utf16le、utf16be、utf32等等。你要一一实现的话,不知道几年能做完。而且//更重要的是,这个别人早都做好了,为什么还要重复呢。

//第2种方法,可以将汉字写入文本文件中,保存为unicode,以二进进方式读,取值

#include

#include

#include

int main(int argc, char *argv[])

{

char *testStr = "中";

unsigned short outputStr[20] = {0};

int unicodeLen = 0;

int i = 0;

unicodeLen = MultiByteToWideChar( CP_ACP,

0,

testStr,

-1,

NULL,

0 );  MultiByteToWideChar( CP_ACP,

0,

testStr,

-1,

(LPWSTR)outputStr,

unicodeLen );

for

(i=0;i

{

printf("[%d]%x\r\n",i,outputStr[i]);

}

return 0;

}

//java 字符串 UTF-8转成 ANSI编码

new String(str.getBytes("UTF-8"), "GB2312");

//http://bbs.csdn.net/topics/390887199

//ANSI 编码相当于没有编码,操作系统是 GB2312 的话,就是上面这例子,准确地说是读取 JVM

//从操作系统中读取的默认编码。这样的话,就能在这台机器上正常显示出来,当然把这个字符保存在文件里面跑到另 //一个

Big5上依然无法显示出来。System.getProperty("file.encoding");

//System.getProperty("sun.jnu.encoding");

//Javascript

//UTF8编码调用encodeURIComponent就行

alert(encodeURIComponent('中国'))

//gb2312编码

//C#

//http://bbs.csdn.net/topics/30367307

//streamWriter 写入文本文件 编码为UTF-8 怎么让它以ANSI格式保存

Dim objwriter As New StreamWriter(filename, False)

Dim objwriter As New StreamWriter(filename,

False,System.Text.ASCIIEncoding)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值