الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تحويل سلسة رموز من Utf8 الى رموز وندوز عادية

بدأه زكيري عبد العالي في 30 يناير 2009 · 10 رد · 1,212 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هل من دالة او ظيفة جاهزة لتحويل سلسة رموز من UTF8الى windows

شكرا

MIRÖdÖ --> MIRODO

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 30 يناير 2009 في 18:25

#2
Utf8toAnsi(string)

لا يعمل اكود

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 30 يناير 2009 في 14:20

#3

لقد عملت هذه الدالة على السريع كي يسكت عني مستعل االبرنامج

FUNCTION StrUrtfToNormal(iStrU:string):string;
 VAR
	vClientDS : TClientDataSet;
	vchar:char;
	i:integer;
 BEGIN
	 Result:='';
	 vClientDS:= TClientDataSet.Create(nil);
	 TRY
	 vClientDS.FileName:='c:\Cspeciaux.xml';
	 vClientDS.Open;

	 For I:=1 to Length(istrU)do
	 begin
		 IF vClientDS.Locate('speciaux',iStrU,[loPartialKey]) THEN
		 begin
			vchar:=vClientDS.FieldByName('normal').asstring[1];
			iStrU:= StringReplace(iStrU ,iStrU,vchar,[rfReplaceAll, rfIgnoreCase]);
		 end;
	 end;
		 Result:= iStrU;
	 FINALLY
		 vClientDS.Free;
	 END;
 END;

 procedure TForm6.Button1Click(Sender: TObject);
 begin
	 edit1.Text:=StrUrtfToNormal('ÀĤŭÁǾÂÃŔШ');
 end;

<?xml version="1.0" standalone="yes"?> 
  <DATAPACKET Version="2.0">
  <METADATA>
  <FIELDS>
  <FIELD attrname="speciaux" fieldtype="string" WIDTH="1"/>
  <FIELD attrname="normal" fieldtype="string" WIDTH="1"/>
  </FIELDS>
  <PARAMS CHANGE_LOG="1 0 4 2 0 4 3 0 4"/>
  </METADATA><ROWDATA>
  <ROW RowState="4" speciaux="À" normal="A"/>
  <ROW RowState="4" speciaux="Á" normal="A"/>
  <ROW RowState="4" speciaux="Â" normal="A"/>
  <ROW RowState="4" speciaux="Ã" normal="A"/>
  <ROW RowState="4" speciaux="Ä" normal="A"/>
  <ROW RowState="4" speciaux="Å" normal="A"/>
  <ROW RowState="4" speciaux="@" normal="A"/>
  <ROW RowState="4" speciaux="â" normal="A"/>
  <ROW RowState="4" speciaux="ã" normal="A"/>
  <ROW RowState="4" speciaux="ä" normal="A"/>
  <ROW RowState="4" speciaux="å" normal="A"/>
  <ROW RowState="4" speciaux="?" normal="A"/>
  <ROW RowState="4" speciaux="ß" normal="B"/>
  <ROW RowState="4" speciaux="฿" normal="B"/>
  <ROW RowState="4" speciaux="β" normal="B"/>
  <ROW RowState="4" speciaux="в" normal="B"/>
  <ROW RowState="4" speciaux="Ć" normal="C"/>
  <ROW RowState="4" speciaux="Č" normal="C"/>
  <ROW RowState="4" speciaux="Ċ" normal="C"/>
  <ROW RowState="4" speciaux="ç" normal="C"/>
  <ROW RowState="4" speciaux="ĉ" normal="C"/>
  <ROW RowState="4" speciaux="č" normal="C"/>
  <ROW RowState="4" speciaux="ċ" normal="C"/>
  <ROW RowState="4" speciaux="ς" normal="C"/>
  <ROW RowState="4" speciaux="Ð" normal="D"/>
  <ROW RowState="4" speciaux="ď" normal="D"/>
  <ROW RowState="4" speciaux="đ" normal="D"/>
  <ROW RowState="4" speciaux="ð" normal="D"/>
  <ROW RowState="4" speciaux="Ħ" normal="H"/>
  <ROW RowState="4" speciaux="ħ" normal="H"/>
  <ROW RowState="4" speciaux="ћ" normal="H"/>
  <ROW RowState="4" speciaux="Ќ" normal="K"/>		
  <ROW RowState="4" speciaux="ќ" normal="K"/>		
  <ROW RowState="4" speciaux="Ŏ" normal="O"/>		
  <ROW RowState="4" speciaux="Ō" normal="O"/>		
  <ROW RowState="4" speciaux="Ő" normal="O"/>		
  <ROW RowState="4" speciaux="ō" normal="O"/>		
  <ROW RowState="4" speciaux="ö" normal="O"/>		
  <ROW RowState="4" speciaux="ǿ" normal="O"/>		
  <ROW RowState="4" speciaux="σ" normal="O"/>		
  <ROW RowState="4" speciaux="Ŕ" normal="R"/>		
  <ROW RowState="4" speciaux="Ŗ" normal="R"/>		
  <ROW RowState="4" speciaux="Ř" normal="R"/>		
  <ROW RowState="4" speciaux="ŕ" normal="R"/>		
  <ROW RowState="4" speciaux="ŗ" normal="R"/>		
  <ROW RowState="4" speciaux="ř" normal="R"/>		
  <ROW RowState="4" speciaux="я" normal="R"/>		
  <ROW RowState="4" speciaux="Ś" normal="S"/>		
  <ROW RowState="4" speciaux="Ş" normal="S"/>		
  <ROW RowState="4" speciaux="Š" normal="S"/>		
  <ROW RowState="4" speciaux="ś" normal="S"/>		
  <ROW RowState="4" speciaux="ŝ" normal="S"/>		
  <ROW RowState="4" speciaux="š" normal="S"/>		
  <ROW RowState="4" speciaux="ş" normal="S"/>		
  <ROW RowState="4" speciaux="Ţ" normal="T"/>		
  <ROW RowState="4" speciaux="Ť" normal="T"/>		
  <ROW RowState="4" speciaux="Ŧ" normal="T"/>		
  <ROW RowState="4" speciaux="ţ" normal="T"/>		
  <ROW RowState="4" speciaux="ť" normal="T"/>		
  <ROW RowState="4" speciaux="ŧ" normal="T"/>		
  <ROW RowState="4" speciaux="т" normal="T"/>		
  <ROW RowState="4" speciaux="Ũ" normal="U"/>		
  <ROW RowState="4" speciaux="Ū" normal="U"/>		
  <ROW RowState="4" speciaux="Ŭ" normal="U"/>		
  <ROW RowState="4" speciaux="Ů" normal="U"/>		
  <ROW RowState="4" speciaux="Ű" normal="U"/>		
  <ROW RowState="4" speciaux="Ų" normal="U"/>		
  <ROW RowState="4" speciaux="Ц" normal="U"/>		
  <ROW RowState="4" speciaux="ũ" normal="U"/> 
  <ROW RowState="4" speciaux="ū" normal="U"/>		
  <ROW RowState="4" speciaux="ŭ" normal="U"/>		
  <ROW RowState="4" speciaux="ů" normal="U"/>		
  <ROW RowState="4" speciaux="ű" normal="U"/>		
  <ROW RowState="4" speciaux="ų" normal="U"/>		
  <ROW RowState="4" speciaux="ϋ" normal="U"/>		
  <ROW RowState="4" speciaux="μ" normal="U"/>		
  <ROW RowState="4" speciaux="ω" normal="W"/>		
  <ROW RowState="4" speciaux="Ψ" normal="W"/>		
  <ROW RowState="4" speciaux="Ш" normal="W"/>		
  <ROW RowState="4" speciaux="Щ" normal="W"/>		
  <ROW RowState="4" speciaux="ш" normal="W"/>		
  </ROWDATA></DATAPACKET>

لكني متاكد من وجود API

ونوز تقوم بهذا العمل

ارجو ا لمساعدة

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 30 يناير 2009 في 18:32

#4

ياسي عبد العالي انظر هذا الرابط يمكنه ان يساعدك إن عرفت كيف تعيد صياغته

http://delphi.developpez.com/faq/?page=typechaine#convertirhtmlspeciaux

عزيزي :

لاتنسى ان تصلي على حبيبنا و شفيعنا يوم لا ينفع مال ولا بنون .

فاللهمّ صّل وسّلم على سيدي و شفيعي وحبيبي محمد عليك الف صلاة وازكى تسليم

*****

2_header.png

#5

تشكر ياصحبي

لكن تقربا نفس الذي عملته الاختلاف ال حيد اني استعلت قائمة دينامكية تتمثل في تسجيلات موجودة في ملف xml

لكني متاكد من وجود API

#6

اعيطيني بعض الوقت ياعبد العالي سوف احاول إنشاء دالة لتساعدك على ذلك

عزيزي :

لاتنسى ان تصلي على حبيبنا و شفيعنا يوم لا ينفع مال ولا بنون .

فاللهمّ صّل وسّلم على سيدي و شفيعي وحبيبي محمد عليك الف صلاة وازكى تسليم

*****

2_header.png

#7

اخي عبد العالي جرب هذه

function ConvertIt( S : string ): string;
var
  n : Integer;
begin
  result := S;
  for n := 1 to Length(result) do
  begin
	case result[n] of
	  #225: result[n] := #160;   // á
	  #193: result[n] := #181;   // Á
	  #233: result[n] := #130;   // é
	  #201: result[n] := #144;   // É
	  #237: result[n] := #161;   // í
	  #205: result[n] := #146;   // Í
	  #243: result[n] := #162;   // ó
	  #211: result[n] := #224;   // Ó
	  #246: result[n] := #148;   // ö
	  #214: result[n] := #153;   // Ö
	  #245: result[n] := #139;   // ő
	  #213: result[n] := #138;   // Ő
	  #250: result[n] := #163;   // ú
	  #218: result[n] := #233;   // Ú
	  #252: result[n] := #129;   // ü
	  #220: result[n] := #154;   // Ü
	  #251: result[n] := #251;   // ű
	  #219: result[n] := #235;   // Ú
	end;
  end;
end;

تم تعديل هذه المشاركة بواسطة mohfa في 30 يناير 2009 في 19:17

عزيزي :

لاتنسى ان تصلي على حبيبنا و شفيعنا يوم لا ينفع مال ولا بنون .

فاللهمّ صّل وسّلم على سيدي و شفيعي وحبيبي محمد عليك الف صلاة وازكى تسليم

*****

2_header.png

#8

الله يرحم والديك اخي محمد.

لكن ان ابحث عن الجاهز اي دالو من دوال windows

على العموم مشكور .

ننتضر منك البدا في مشروعك ولو بدراسة التحليلية

#10

يمنك استخدام النوع Widestring لعمل التحويل من والي ascii، بطريقة سهلة وبسيطة لكن في حالة كان اللغة تحتوي على حروف غير معرفة

في الاسكي سوف تظهر بشكل علامات استفهام لذا يجب عليك تحديد code page للغة المستخدمة المراد التحويل منها وذلك بإستخدام API مثل WideCharToMultiByte

function WideStringToString(const ws: WideString; codePage: Word): AnsiString;
var
  l: integer;
begin
  if ws = '' then
	Result := ''
  else
  begin
	l := WideCharToMultiByte(codePage,
	  WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,
	  @ws[1], - 1, nil, 0, nil, nil);
	SetLength(Result, l - 1);
	if l > 1 then
	  WideCharToMultiByte(codePage,
		WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,
		@ws[1], - 1, @Result[1], l - 1, nil, nil);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  X : WideString;
begin
  X := 'MIRÖdÖ ';
  ShowMessage(WideStringToString(X,1253));
end;

انا استخدمت كود 1253 وهو للغة اليونانية وظهرت الأحرف بشكل صحيح، لذا عليك تغير الكود اللى المستخدمة (لا اعرف اذا كان الكلمة فرنسية ام يونانية)

المثال موجود في هذه الصفحة http://swissdelphicenter.ch/en/showcode.php?id=1692 للتحويل من والى UC

لكني انا استخدمت سابقاً في احد المشاريع مكتبة DIConverters (حسب ما اذكر كان المستخدم اللغة التايلاندية) وهي سهلة الاستخدام ومجانية

http://www.yunqa.de/delphi/doku.php/produc...onverters/index

لا تحزن:

إن كنت فقيرا فغيرك محبوس في دين، وإن كنت لا تملك وسيلة نقل فسواك مبتور القدمين، وان كنت تشكوا من آلام فغيرك يرقدون على الاسرة البيضاء و من سنوات، وان فقدت ولدا فغيرك فقد عددا من الأولاد و في حادث واحد.

لا تحزن:

فأنت تشرب الماء الزلال، و تستنشق الهواء الطلق، و تمشي على قدميك معافى، و تنام ليلك آمنا.

#11

باؤك الله فيك استاذي محمد لكن http://register.compubase.net/

في هذا الموقع الذي انا بصدد اجارا تحديثات فيه و نستعمل هذه القاءمة من اللغات و جاري الان عملبة اطافة العربية و غيرها .

لكن لا عليك وجدت الحل ان شاء الله غدا سارفقه .

مواضيع مشابهة