TIS-620 oder thai-zeichen

Diskutiere TIS-620 oder thai-zeichen im Computer-Board Forum im Bereich Diverses; hat wer ahnung wie man dem php-interpreter unicode beibringt ?? das der range 0E00 - 0E7f (thailetters) richtig interpretiert werden kann ...
altf4

altf4

Senior Member
Themenstarter
Dabei seit
16.07.2004
Beiträge
365
Reaktion erhalten
0
Ort
Bangkok Noi
hat wer ahnung wie man dem php-interpreter unicode beibringt ??
das der range 0E00 - 0E7f (thailetters) richtig interpretiert werden kann ??

maybe kennt da wer referenzen (die ned bei google indiziert sind)

java willich mir dafür nicht so wirklich antuen ..
 
T

thpitsch

Junior Member
Dabei seit
01.07.2003
Beiträge
45
Reaktion erhalten
0
Ort
Pattaya / Thailand
Du wirst kaum einem Interpreter Unicode beibringen wollen?
Ich nehme daher an, dass du mit einem php-skript Ausgaben erzeugen willst, die Unicode enthalten.
Ich bin zu Zeit daran, mein Wörterbuch auf Unicode umzustellen und arbeite dabei mit Perl-Skripten. Aber die Aufgabe ist im Prinzip die gleiche. Da ich alle meine Texte im 8-Bit-Code gespeichert habe, erzeuge ich dadurch Unicode, dass ich den festen Wert 3424 dezimal oder hex 0D60 addiere. Aus go gai (Code 161 dez) wird dann 3585 dez oder eben 0E01 hex - das ist der Unicode. Zum Einfügen in html-Seiten setze ich &# vor den Dezimalcode und ein Semikolon dahinter: ก Der Code wird dann vom Browser als Unicode interpretiert.
Und nicht vergessen: im Header muss das Metatag
<meta http-equiv="Content-Type" content="text/html; charset=$charset">
angegeben sein. Und die verwendete Schrift muss eine Unicode-Schrift sein (der Internet-Explorer holt sich bei falscher Schriftangabe dennoch in den meisten Fällen die richtigen Zeichen, aber mit anderen Browsern sind bei falscher Schriftdefinition Probleme vorprogrammiert).

Ich hoffe, das hilft ein wenig...
 
altf4

altf4

Senior Member
Themenstarter
Dabei seit
16.07.2004
Beiträge
365
Reaktion erhalten
0
Ort
Bangkok Noi
charsetanpassung undso ist ja einfach ....
(ich gehöre nich zu der sorte die sowas den user machen lassen hehe)

das komplizierte ist wenn eingaben in "thaischrift" verarbeitet werden sollen .... da der php interpreter nur latin1 und baselatin versteht ...

denke am besten wäre ein externes programm das die eingaben in unicode umsetzt oder in ein anderes lesbare format ...

hab leider noch nichts / niemand gefunden der sich damit wirklich auskennt ... oder weiss wie man das am bestern realisieren könnte

java kann als beispiel unicode ... aber ich kein java -g-
 
T

thpitsch

Junior Member
Dabei seit
01.07.2003
Beiträge
45
Reaktion erhalten
0
Ort
Pattaya / Thailand
Hi,

leider weiß ich immer noch nicht genau, was du vorhast. Wenn du in deinem Skript lokal Eingaben machen möchtest, muss ich passen. Aber wenn das Skript auf einem Server läuft und die Eingaben in einer HTML-Seite gemacht werden, dann läuft es genau umgekehrt: Je nachdem, wie das Eingabefeld formatiert ist, erhälst du bei der Übertragung entweder TIS-Code oder Unicode. Der TIS-Code lässt sich - wie vorher beschrieben - in Unicode umsetzen, Unicode natürlich auch in TIS, falls dir das für die Weiterverarbeitung lieber ist.

Ich habe für dich eben ein Test-Eingabefeld online gestellt, da kannst du mal sehen, was übertragen wird:

http://www.clickthai.de/_LEXIKON/onlinetest.html

Gebe einmal Thai-Zeichen ein, über Tastatur oder aus Webseiten in die Zwischenablage kopiert. Dann klicke auf "Suche" und du bekommst angezeigt, wie die Zeichen (als Key2) auf dem Server ankommen.

Beispiel:
นางหมั่น wird zu ¹Ò§ËÁÑè¹ - das ist TIS Code, den du für deine Zwecke verwenden kannst, mit oder ohne Umkodierung.

Eine zweite Testseite ist mit charset=UTF-8 eingestellt:

http://www.clickthai.de/_LEXIKON/onlinetest2.html

Wenn du dort das gleiche Wort eingibst, erhälst du eine Unicode-Übertragung. Kleines Problem: weil aber die Unicodes als übertragen werden und das & gleichzeitig Trennzeichen für Schlüsselpaare ist, werden die Zeichen als Schlüssel ohne Werte behandelt und als #xxxx; dargestellt. Kein Problem, wenn mans weiß: dann stellt eben #xxxx; ein Unicode-Zeichen dar, und wenn mans braucht, ist das & schnell wieder zugefügt.

So etwas deutlicher geworden? Wenn nicht, dann beschreibe bitte etwas genauer, was du brauchst. Denn, wie schon gesagt, dem Interpreter ist nicht Unicode beizubringen, sondern deinem Programm. Zumindest, wenn es über einen Webserver läuft.
 
altf4

altf4

Senior Member
Themenstarter
Dabei seit
16.07.2004
Beiträge
365
Reaktion erhalten
0
Ort
Bangkok Noi
funktionieren perfekt deine beispiele.

im moment verarbeite ich die thai-eingaben wie in deinem ersten beispiel.

also reine verarbeitung des TIS codes.
das problem ist das der php-interpreter (der auch gleichzeitig die engine für das "programm" ist damit nicht 100% umgehen kann
da nicht alle zeichen im coderange 0E00 - 0E7E
ein latin-zeichen besitzen,
es kann also passieren das nicht alle thai-zeichen
verarbeitet werden können ...

das problem ist das der php interpreter nicht weiss aus welchem coderange die zeichen sind da er (wie in deinem beispiel andere zeichen als grundlage hat)

(า wird zu Ò)
die unicode übersetzung von "า" ist eine andre als die von "Ò"

die "weitergebe" der eingaben muss also in unicode erfolgen.

wenn also der php-interpreter die zeichen
weitergibt gibt es probleme ...

ums auf den punkt zu bringen.
das GSM 3.22 protokoll unterstützt NUR "Latin1" oder "unicode"
wenn ich also thai-zeichen per sms verschicken will
muss ich diese in unicode übermitteln ...
die handys die thai-zeichen können machen das auch so ...

es gilt also einen weg zu finden der die eingegeben
thai-zeichen (TIS-620) in unicode umsetzt ...
sozusagen als "filter" ...
 
altf4

altf4

Senior Member
Themenstarter
Dabei seit
16.07.2004
Beiträge
365
Reaktion erhalten
0
Ort
Bangkok Noi
thpitsch" schrieb:
Hi,
Kleines Problem: weil aber die Unicodes als übertragen werden und das & gleichzeitig Trennzeichen für Schlüsselpaare ist,
nicht wirklich ein problem .. da ich eh NUR den tatsächlichen
zeichen code benoetige. (also die 4x)

&# wird ja nur zur darstellung benoetigt ...
falls noetig einmal strreplace .. und fertig .. hehe

mussich mir also peal antuen ?
.oO( OMG .. jahre werden vergehen hehe)
 
altf4

altf4

Senior Member
Themenstarter
Dabei seit
16.07.2004
Beiträge
365
Reaktion erhalten
0
Ort
Bangkok Noi
was mir grade bei deinem zweiten beispiel auffällt

wenn man thaizeichen eingibt
bekommt man ergebnisse im coderange "34??" zurück

das ist auch im latin1 coderange ...

also selbes problem wie wenn php die übersetzung macht ..
 
Visitor

Visitor

Senior Member
Dabei seit
15.11.2000
Beiträge
1.093
Reaktion erhalten
0
Ort
Berlin
Guten Morgen altf4,

Vielleicht hilft dir das hier weiter.
Nutze für das Browserfenster/die Formularseite einen Latin Schriftsatz wie z.B:
Code:
META http-equiv=Content-Type content=	ext/html; charset=ISO-8859-1
oder

Code:
META http-equiv=Content-Type content=	ext/html; charset=windows-1252
Beim Absenden sollte der Browser die Formulareingabe dann automatisch urlencoden.
Der String sollte dann in etwa so ausschauen:
Code:
%E4%C1%E8%C1%D5%A2%E9%CD%A4%C7%D2%C1%E3%CB%C1%E8
Somit sind alle Sonderzeichen URLkodiert.

Den an den PHP-Interpreter übergebenen Wurm lässt Du dann durch folgende Funktion laufen.

Code:
function Ascii_encode( $string )
{
	$trans_tbl = get_html_translation_table( HTML_ENTITIES );
	$trans_tbl = array_flip( $trans_tbl );
	$string = strtr( $string, $trans_tbl );

	for ( $i = 0; $i  strlen($string); $i++ )
	{
		$encoded .= ´&#´ . ord( substr($string, $i) ) . ´;´;
	}

	return $encoded;
}
HTH

Gruß,
Der Visitor
 
T

thpitsch

Junior Member
Dabei seit
01.07.2003
Beiträge
45
Reaktion erhalten
0
Ort
Pattaya / Thailand
Hi,

jetzt kommen wir der Sache ja näher.

Wenn du im HTML-Formular า eingibst, wird daraus u. U. nicht nur ein "Ò", sondern ein Ò Das gilt für einige andere Zeichen ebenfalls, es existieren Tabellen darüber, die man zur Umcodierung heranziehen kann. Das aber nur nebenbei...

Das eigentliche Missverständnis:

>> า wird zu Ò)
>>d1e unicode übersetzung von "า" ist eine andre als die von "Ò"

Glücklicherweise hat "Ò" einen anderen Unicode als sara a. Du willst ja auch nicht wirklich "Ò" anzeigen. Das Ersatzzeichen wird ja nur angezeigt, weil ein nicht Unicode-fähiges Programm bei einem 8-Bit-Code dieses automatisch aus der ASCII-Tabelle nimmt, die der Unicode-Page 0 entspricht. Wir beide wissen aber, dass es eigentlich ein Thai-Zeichen sein soll, und transformieren es in die Unicode-Page E0.
Zusammengefasst: Falls die html-Codierung Ò auftreten sollte, muss das Zeichen zunächst nach Tabelle in ein "Ò" übersetzt werden, am besten gleich in den entsprechenden Hex- oder Dezimalwert, in diesem Fall Hex "D2". Daraus wird durch Addition des festen Faktors der eigentliche Unicode des gewünschten Zeichens. Die Addition macht also die Page-Transformierung zu Unicode.

Was ich jetzt nicht weiß, ist, wie die Unicode-Zeichen im GSM-System dargestellt werden. Möglicherweise können die wiederum nichts mit anfangen. Die Konvertierung in das GSM-Format ist aber ganz bestimmt ebenfalls machbar.
 
T

thpitsch

Junior Member
Dabei seit
01.07.2003
Beiträge
45
Reaktion erhalten
0
Ort
Pattaya / Thailand
> Visitor,

du hast natürlich recht, die Anzeige in meinen beiden Beispielseiten ist bereits durch Perl verarbeitet. Die eigentliche Übertragung ist so, wie du sie darstellst.

Aber auch darin wird für das Zeichen im Beispiel Ò übertragen und muss übersetzt werden (das macht aber wahrscheinlich die php-Routine, die du angibst).

Ansonsten wird es einfacher, wenn der charset=utf-8 im html-Formular verwendet wird. Dann wird in jedem Fall bereits Unicode-codiert übertragen.
 
altf4

altf4

Senior Member
Themenstarter
Dabei seit
16.07.2004
Beiträge
365
Reaktion erhalten
0
Ort
Bangkok Noi
moin Visitor

hab mal dein scriptsnip .. benutzt um die daten irgendwie einzufangen

sieht so aus: "http://sms.nc-sys.net/ROOT/test.php.txt"

ohne das .txt das ganze in "funktionierend"

ausgeben tut das den eigegeben unicode
getrennt mit "+" (zwecks veranschaulichung)

wenn ich nun das Baht symbol (als beispiel)
eingebe ... bekomme ich 224 184 191
als antwort ...

bei einem latin1 zeichen "x" kommt: 120 als antwort

also entweder binnich viellich verbloeded .. oder
ists einfach zu früh am morgen ...

in Unicode ist das BAht symbol = 0E3F
und das x = 0078

ich finde da keine wirklichen zusammenhänge ...
aber bin schonmal weiter (dank eurer hilfe ... )
der phpinterpreter bringt mal zumindest keinen müll ...
 
altf4

altf4

Senior Member
Themenstarter
Dabei seit
16.07.2004
Beiträge
365
Reaktion erhalten
0
Ort
Bangkok Noi
altf4" schrieb:
bei einem latin1 zeichen "x" kommt: 120 als antwort

also entweder binnich viellich verbloeded .. oder
ja binnich *lach*

120 in decimal = 78 in hex -g-
-peinlich-

okay nu weissich was ausgegeben wird ..

bleibt nurnoch das problem uebrich ...
warum 3 ausgaben beinem thai-symbol kommen ..
und wie man das wieder nach "HEX" bekommt ...
 
altf4

altf4

Senior Member
Themenstarter
Dabei seit
16.07.2004
Beiträge
365
Reaktion erhalten
0
Ort
Bangkok Noi
hab nochmal bisschen damit gebastelt

also je nach verwendedte eingabemethode
ändert sich auch die "ausgabe" (logisch)

---------
als basis hab ich (der einfachheit halber)
das "baht symbol" benutzt

das zeichen hat den code 0E3F (also 3F) oder in dec 63

die ergenisse bei änderung des charset im formular:
tis-620
223 (hex df)

utf-8
224,184,191 (hex e0:b8:bf)

iso-8859-1
38,35,51,54,52,55,59 (hex 26:23:33:36:34:37:3b)

---------
aber n richtighes brauchbares ergebniss
kommt dabei irgendwie nicht wirklich raus.
 
T

thpitsch

Junior Member
Dabei seit
01.07.2003
Beiträge
45
Reaktion erhalten
0
Ort
Pattaya / Thailand
Hi AltF4,

mit deinem Script erzeugt auch ein go gai eine 3-Byte-Ausgabe: 224 184 129. Wenn ich versuche, das umzurechnen, habe ich das gleiche Problem wie du beim Baht. Es ist aber ein Problem der Interpretation, denn übertragen wird der korrekte Hex-Code #3585 für go gai und #3647 für Baht. Mit meinem ersten Test-Script sieht der Parameterstring für diese beiden Zeichen so aus:

dict=td&key1=&.#3585;&.#3647;

(Achtung: die Punkte vor den # habe ich eingefügt, damit die Zeichen hier im Forum nicht als Unicode-Zeichen interpretiert werden. dict und key1 sind die Feldnamen in meinem Script, die könnten bei dir anders aussehen. Aber die übertragenen Zeichen kommen garantiert genau so bei dir an.)

Diese Zeichen zu interpretieren dürfte doch nicht so schwer sein, oder?
 
altf4

altf4

Senior Member
Themenstarter
Dabei seit
16.07.2004
Beiträge
365
Reaktion erhalten
0
Ort
Bangkok Noi
thpitsch" schrieb:
mit deinem Script erzeugt auch ein go gai eine 3-Byte-Ausgabe: 224 184 129.

dict=td&key1=&.#3585;&.#3647;

Diese Zeichen zu interpretieren dürfte doch nicht so schwer sein, oder?
nein ein problem ist das nicht ...
das "problem" ist ... das ich nicht weiss wie aus
"224 184 129" -- "3647" wird

wenn ich 3647 habe als ergebniss
muss ich da ja nur HEX draus machen und habe mein "0E3F" ...

was fehlt ist der weg zwischen der 3byte ausgabe und deiner ausgabe ..
 
T

thpitsch

Junior Member
Dabei seit
01.07.2003
Beiträge
45
Reaktion erhalten
0
Ort
Pattaya / Thailand
Hi AltF4,

wie schon vorhin gesagt: übertragen wird der korrekte Hexwert! Diese 3-Byte-Ausgabe kommt aus der PHP-Funktion von Visitor. Da ich kein PHP kann, kann ich nicht beurteilen, was dort falsch läuft.
Schau dir doch mal den String vor dem Encoding an...
 
T

thpitsch

Junior Member
Dabei seit
01.07.2003
Beiträge
45
Reaktion erhalten
0
Ort
Pattaya / Thailand
Und gleich noch mal...,

Wenn du mit der 3-Byte-darstellung leben willst, dann kannst du dir auch so behelfen:

Betrachte das erste Zeichen Hex E0 einfach als Zeichen dafür, dass ein Unicode-Zeichen folgt.

Nimm die beiden nächsten Zeichen und konvertiere sie zu einem Hex-Wort.
Subtrahiere davon Hex AA80
Das Ergebis ist der Unicode.

Oder in Dezimal:
Erstes Zeichen 224 ignorieren.
Zweites Zeichen mit 256 multiplizieren und drittes Zeichen addieren.
Davon Dez 43648 abziehen.
Das Ergebis ist der Unicode in Dezimal.
 
altf4

altf4

Senior Member
Themenstarter
Dabei seit
16.07.2004
Beiträge
365
Reaktion erhalten
0
Ort
Bangkok Noi
thpitsch" schrieb:
Nimm die beiden nächsten Zeichen und konvertiere sie zu einem Hex-Wort.
Subtrahiere davon Hex AA80
Das Ergebis ist der Unicode.
das nenn ich ma professionelle hilfe
hehe .. und es geht sogar ...

dankfein nochma ....

deine mathematik + visitors script + 3milliarden gehirnzellen
und es klappt *lach*
 
Thema:

TIS-620 oder thai-zeichen

TIS-620 oder thai-zeichen - Ähnliche Themen

  • Unicode fonts auch für TIS-620?

    Unicode fonts auch für TIS-620?: Hallo alle, wo ich doch bei Schriftarten bin. Ich habe mal ein wenig in den alten Beiträgen gesucht aber nicht die Antwort auf diese Frage...
  • Unicode fonts auch für TIS-620? - Ähnliche Themen

  • Unicode fonts auch für TIS-620?

    Unicode fonts auch für TIS-620?: Hallo alle, wo ich doch bei Schriftarten bin. Ich habe mal ein wenig in den alten Beiträgen gesucht aber nicht die Antwort auf diese Frage...
  • Oben