🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.std.internat
Article #740

Character representation

#740
From: root
Date: Sat, 15 Aug 1987 06:14
57 lines
3380 bytes
+---- Erland Sommarskog writes the following in article <2171@enea.UUCP> ----
| In some languages the combination may constitute a new letter
| ("a" with ring and dots, "o" with dots in Swedish), in other you
| can apply accents and other signs without affecting the sorting.
| (E.g. French, Italian)
|   The conclusion is that a more sofisticated approach muct be taken.
| However, I must admit that I do not have any bright proposals right
| now, yet think of it!-- 
+----

I will be posting (as soon as I finish this note) a routine which we use
called stracmp() to the newsgroup comp.sources.misc.  It compares two
strings of 8 bit characters while taking into account the correct collating
sequence and precedence (if any) of accented letters.  The routine is
designed to drop in in place of the common strcmp().

The code has been used on IBM-PCs which support a limited set of accented
characters in their character display ROMS and also with the ISO-Latin-1
alphabet (this requires more sophisticated display drivers).  It would be
very simple to add the tables for Latin-2 through n if desired.  The code
is not dependent on any particular hardware, but it does assume the
C compiler handles "unsigned chars".

I am including some of the comments I made in the header to the code:

Description:
	stracmp() implements a string compare which correctly handles
	accented (non English) characters which have been encoded using
	8-bit characters.  It uses character lookup tables for doing 
	string compares when accented characters are present and/or a
	non-ASCII collating sequence is desired.
Theory:
	  The correct way of sorting (or comparing) strings which contain
	accented characters is to first compare the strings with all accents
	stripped. If the two strings are the same, then and only then are the
	accents used.  This second comparison involves only the accents.
	You can think of this as comparing the two strings with all the letters
	stripped.
	  Also, there are times when the "normal" ASCII collating sequence is
	not appropriate for lexical ordering.  (ie.  A <AE> B C <CEDILLA> D ...>
Examples:
			     ,  :
	Comparing Junta and Junta	(the second word has diacritical
					 marks over the two vowels)
	    first we compare("Junta", "Junta")	which shows them EQUAL
	then we must compare("     ", " '  :")
				  ,  :
	Thus, Junta comes before Junta in the lexical ordering of the two words.
		   ,          ,
	Comparing Junta  and Junto	(both words have accented 'u's)
	    first we compare("Junta", "Junto"); since they are
	different  we do not need to do anything more with the accents:
	  ,                    ,
	"Junta" is less than "Junto".
 
-- 
John Plocher uwvax!geowhiz!uwspan!plocher  plocher%uwspan.UUCP@uwvax.CS.WISC.EDU
Technical Details
Message-ID: <176@hobbes.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!clyde!rutgers!uwvax!uwmacc!hobbes!root
References: <2171@enea.UUCP>

Show Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!clyde!rutgers!uwvax!uwmacc!hobbes!root
From: root@hobbes.UUCP
Newsgroups: comp.std.internat
Subject: Character representation
Message-ID: <176@hobbes.UUCP>
Date: Sat, 15-Aug-87 02:14:30 EDT
Article-I.D.: hobbes.176
Posted: Sat Aug 15 02:14:30 1987
Date-Received: Sun, 16-Aug-87 08:39:51 EDT
References: <2171@enea.UUCP>
Reply-To: root@hobbes.UUCP (John Plocher)
Followup-To: comp.std.internat
Organization: U of Wisconsin - Madison  Spanish Department
Lines: 57