关于MEMO读取的问题(UNICODE编码) ( 积分: 100 )

  • 主题发起人 主题发起人 jacknes111
  • 开始时间 开始时间
J

jacknes111

Unregistered / Unconfirmed
GUEST, unregistred user!
用dephi或c++bulid
怎样从ACCESS中读取MEMO中的数据(uncoide编码)再存储到另一个表中同样是Memo属性

我自己写进去是乱码,
我的代码如下
data->Close();
data->SQL->Clear();
data->SQL->Text = "delete * from result_israel";
data->ExecSQL();

data->Close();
data->SQL->Clear();
data->SQL->Text = "select * from dictionary_israel where jiexi<>'' order by id";//解释 is not null order by id";
data->Open();
ProgressBar1->Max = data->RecordCount;
ProgressBar1->Min = 0;

for(int i=0; i<data->RecordCount; i++)
{
WideString jieshi,tempstr, kong = "/r/n";
WideString word = data->FieldByName("Word")->Value;
WideString datastr = data->FieldByName("jiexi")->Value;

int pos;
pos = datastr.Pos("/n");
if(pos == 0)
{
data->Next();
ProgressBar1->Position += 1;
continue;
}
tempstr = datastr.SubString(1,pos - 2);
if(tempstr != word)
{
data->Next();
ProgressBar1->Position += 1;
continue;
}
jieshi = datastr.SubString(pos + 1,datastr.Length() - pos);
write->Close();
write->SQL->Text = "insert into result_israel (Word,jiexi) values (:a, :b)";
write->Parameters->Items[0]->Value = word;
write->Parameters->Items[1]->Value = jieshi;
write->ExecSQL();

ProgressBar1->Position += 1;
data->Next();
}
ShowMessage("ok!");
望各位大虾们帮个忙谢谢!!!!!!!!!!
数据我可以提供(留个邮箱)先谢谢各位了
 
我也遇到好像一样的问题,我是把一串韩文存入数据库,再读出就乱了,变成?号了,

http://www.delphibbs.com/delphibbs/dispq.asp?lid=3686074

关注中...
 
dcx0037@163.com
 
用tnt unicode controls啊!老外做了5年的东西。
 
tnt unicode controls 我没有啊,,能否发个给我,,
我的邮箱是jacknes009@163.com 先谢谢啊,,

我的tnt unicode controls 中没有TntADOQueryLX1哦,,是不是这个原因呢,,
我用的是ADOQuery1哦,,
 
dcx0026 数据已经发给你了。。请帮忙看看把,,谢谢
 
ADOQuery本身就是支持Unicode的,它的属性都是wideString声明的,所以你只要做个TntGrid来显示就可以了。
 
http://www.tntware.com/delphicontrols/unicode/
这是Tnt Unicode Controls的下载网站。
 
zqw0117, 还是不行哦,,,我写了一个列子,数据还是些?号哦,
要不你给我你的邮箱, 我给你我的代码,,你帮我看看可以吗?麻烦你了。。
 
注意一下,在你的处理中,任何地方都不要用string对数据做处理,因为string会导致unicode编码被转换成ansi的,所以你除了用支持Unicode的控件外,在你自己的处理函数或者你的逻辑中,需要把所有从数据库中读取出来的数据放入WideString变量中处理,而不是string,并且还需要注意,不能用TStringList,你需要用TTntWideStringList这样的类(好像是这个名字,你搜搜Tnt的代码)进行处理。
 
var
MyVariant :WideString;
begin
TntRichEdit1.Clear;
MyVariant:= Column.Field.Value;
TntRichEdit1.Lines.Add(MyVariant);
end;
我是这样写的有没有问题啊,,
加载到TntRichEdit1是问号哦,,哎!~
 
你的Form是不是TntForm继承的?
 
不是的,,怎么了,,这也有问题嘛?
是不是要改成TntForm就可以了嘛?
好的,,我试试。。
 
我试了,,还是不行哦,,还是?号哦
 
那就不太清楚了。一般用Tnt创建Unicode支持的程序的时候,首先新建项目,删除项目自动创建的form,然后点new菜单,选TNT unicode form新建,最后再放控件。一般都是这样的流程。另外你帖的代码似乎是读取的,如果你要读取unicode,首先得保证存入的是unicode(不是表设计的是unicode就说明你存入的是unicode的字符),你得看看是不是你试图读取你以前用非unicode支持的控件写入到数据库的数据,如果是这样的话,那因为你写入的时候就是被破坏了的字符,当然读也读不出来正确字符的。
 
zqw0117,
要不你给我你的邮箱, 我给你我的代码(dephi的),,你帮我看看可以吗?麻烦你了。。
 
zqw0117, 你有QQ嘛? 发QQ也可以, 我给你我的代码(dephi的),,你帮我看看可以吗?麻烦你了。。
 
jacknes111,我看了你的数据,可能你在将字符串写入数据库时,进行了错误的转换,应该是用了string。
zqw0117说的对,Tnt很好用的。
你可以看一下Tnt带的例子。
如果你的字符串是从Unicode编码的文件取得,那要用到WideCharToMultiByte函数,
如果是从界面输入的,那用Tnt就好了。
 
dcx0026
我读出来的数据就是?的哦,,
关键是读的问题,,
我把我的代码发到你的邮箱里了,,
你帮我看看有没有什么问题,,
 
(ש"ע) אביוגנסיס, התהוות אורגניזם חי מחומר דומם (ביולו

这是那国文字
 
后退
顶部