delphi7中 怎样把文件保存成unicode编码保存

 我来答
守意如城
推荐于2016-04-16 · TA获得超过107个赞
知道小有建树答主
回答量:134
采纳率:50%
帮助的人:21.5万
展开全部
delphi7中不支持。

用windows自带的记事本程序打开文件,然后在菜单中选择“另存为”,并在弹出窗口的编码选择中选择“unicode”。
百度网友e510ed9
2013-03-26 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:92.7万
展开全部
很多年前就不用D7了,不过原理都差不多,你可以用TStringStream来保存数据,该有个编码的属性,自己查一查吧
追问
D7中的TStringStream 所有方法都看过了, 没有要穿编码属性的方法。
D2009以后的 可以用SaveToFile(fileName,EnCodeing)。
就是D7的不知道该怎么弄。
追答
TStringStream.Create(?)
检查构造函数参数没?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sxdtgsh
推荐于2016-08-10 · TA获得超过2221个赞
知道小有建树答主
回答量:913
采纳率:75%
帮助的人:804万
展开全部
D7没有SaveToFile(FileName,Encodeing)这样的,需要将ansi转成unicode,
function AnsiToUnicode(s:string):WideString;
var
lpWideChar:PWideChar;
len:Integer;
begin
len := ( Length(s) + 1 ) * 2;
GetMem(lpWideChar, len);
ZeroMemory(lpWideChar, len);
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,
PChar(s), Length(s),lpWideChar, Len);
Result := lpWideChar;
FreeMem(lpWideChar);
end;
function UnicodeToAnsi(s:WideString):string;
var
lpChar:PChar;
len:integer;
begin
len := Length(s) * 2;
GetMem(lpChar,len);
ZeroMemory(lpChar, len);
WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, PWideChar(s),
Length(s),lpChar,Len, nil, nil );
Result := lpChar;
FreeMem(lpChar);
end;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bdszyc927
2013-03-26 · 超过18用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:40.8万
展开全部
用AnsiToUtf8
函数原型:function AnsiToUtf8(const S: string): UTF8String;
更多追问追答
追问
和utf8没关系把?
追答
唉,补补课
Unicode和UTF-8
为了统一全世界各国语言文字和专业领域符号(例如数学符号、乐谱符号)的编码,ISO制定了ISO 10646标准,也称为UCS(Universal Character Set)。UCS编码的长度是31位,可以表示231个字符。如果两个字符编码的高位相同,只有低16位不同,则它们属于一个平面(Plane),所以一个平面由216个字符组成。目前常用的大部分字符都位于第一个平面(编码范围是U-00000000~U-0000FFFD),称为BMP(Basic Multilingual Plane)或Plane 0,为了向后兼容,其中编号为0~256的字符和Latin-1相同。UCS编码通常用U-xxxxxxxx这种形式表示,而BMP的编码通常用U+xxxx这种形式表示,其中x是十六进制数字。在ISO制定UCS的同时,另一个由厂商联合组织也在着手制定这样的编码,称为Unicode,后来两家联手制定统一的编码,但各自发布各自的标准文档,所以UCS编码和Unicode码是相同的。
有了字符编码,另一个问题就是这样的编码在计算机中怎么表示。现在已经不可能用一个字节表示一个字符了,最直接的想法就是用四个字节表示一个字符,这种表示方法称为UCS-4或UTF-32,UTF是Unicode Transformation Format的缩写。一方面这样比较浪费存储空间,由于常用字符都集中在BMP,高位的两个字节通常是0,如果只用ASCII码或Latin-1,高位的三个字节都是0。另一种比较节省存储空间的办法是用两个字节表示一个字符,称为UCS-2或UTF-16,这样只能表示BMP中的字符,但BMP中有一些扩展字符,可以用两个这样的扩展字符表示其它平面的字符,称为Surrogate Pair。无论是UTF-32还是UTF-16都有一个更严重的问题是和C语言不兼容,在C语言中0字节表示字符串结尾,库函数strlen、strcpy等等都依赖于这一点,如果字符串用UTF-32存储,其中有很多0字节并不表示字符串结尾,这就乱套了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式