Re: Simple string conversion from UCS2 to ISO8859-1

Liste des GroupesRevenir à cl c 
Sujet : Re: Simple string conversion from UCS2 to ISO8859-1
De : geoff (at) *nospam* invalid.invalid (Geoff)
Groupes : comp.lang.c
Date : 01. Mar 2025, 18:31:55
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <tvg6sj54gssn4m4ao7m0g48e0nflbfsda8@4ax.com>
References : 1
User-Agent : ForteAgent/7.20.32.1218
On Fri, 21 Feb 2025 12:40:06 +0100, pozz <pozzugno@gmail.com> wrote:

I want to write a simple function that converts UCS2 string into ISO8859-1:
>
void ucs2_to_iso8859p1(char *ucs2, size_t size);
>
ucs2 is a string of type "00480065006C006C006F" for "Hello". I'm passing
size because ucs2 isn't null terminated.
>
I know I can use iconv() feature, but I'm on an embedded platform
without an OS and without iconv() function.
>
It is trivial to convert "0000"-"007F" chars: it's a simple cast from
unsigned int to char.
>
It isn't so simple to convert higher codes. For example, the small e
with grave "00E8" can be converted to 0xE8 in ISO8859-1, so it's trivial
again. But I saw the code "2019" (apostrophe) that can be rendered as
0x27 in ISO8859-1.
>
Is there a simplified mapping table that can be written with if/switch?
>
if (code < 0x80) {
  *dst++ = (char)code;
} else {
  switch (code) {
    case 0x2019: *dst++ = 0x27; break;  // Apostrophe
    case 0x...: *dst++ = ...; break;
    default: *ds++ = ' ';
  }
}
>
I'm not searching a very detailed and correct mapping, but just a
"sufficient" implementation.
>

#include <stdint.h>
#include <stddef.h>

// Function to convert UCS2 to ISO8859-1
void UCS2ToISO88591(const uint16_t* ucs2, size_t length, char* iso88591) {
    for (size_t i = 0; i < length; ++i) {
        uint16_t ucs2_char = ucs2[i];
        if (ucs2_char <= 0x00FF) {
            iso88591[i] = (char)ucs2_char;
        } else {
            // Handle characters that cannot be represented in ISO8859-1
            iso88591[i] = '?'; // Replace with a placeholder character
        }
    }
    // Null-terminate the ISO8859-1 string
    iso88591[length] = '\0';
}

Date Sujet#  Auteur
21 Feb 25 * Simple string conversion from UCS2 to ISO8859-165pozz
21 Feb 25 +* Re: Simple string conversion from UCS2 to ISO8859-129Richard Damon
21 Feb 25 i`* Re: Simple string conversion from UCS2 to ISO8859-128pozz
21 Feb 25 i +* Re: Simple string conversion from UCS2 to ISO8859-116Janis Papanagnou
21 Feb 25 i i+- Re: Simple string conversion from UCS2 to ISO8859-11Janis Papanagnou
21 Feb 25 i i`* Re: Simple string conversion from UCS2 to ISO8859-114Keith Thompson
21 Feb 25 i i `* Re: Simple string conversion from UCS2 to ISO8859-113Janis Papanagnou
22 Feb 25 i i  `* Re: Simple string conversion from UCS2 to ISO8859-112David Brown
22 Feb 25 i i   +* Re: Simple string conversion from UCS2 to ISO8859-15Janis Papanagnou
22 Feb 25 i i   i+- Re: Simple string conversion from UCS2 to ISO8859-11David Brown
22 Feb 25 i i   i`* Re: Simple string conversion from UCS2 to ISO8859-13Lawrence D'Oliveiro
24 Feb 25 i i   i `* Re: Simple string conversion from UCS2 to ISO8859-12Janis Papanagnou
24 Feb 25 i i   i  `- Re: Simple string conversion from UCS2 to ISO8859-11Lawrence D'Oliveiro
22 Feb 25 i i   `* Re: Simple string conversion from UCS2 to ISO8859-16Richard Damon
22 Feb 25 i i    +- Re: Simple string conversion from UCS2 to ISO8859-11David Brown
22 Feb 25 i i    +* Re: Simple string conversion from UCS2 to ISO8859-12Janis Papanagnou
23 Feb 25 i i    i`- Re: Simple string conversion from UCS2 to ISO8859-11Richard Damon
22 Feb 25 i i    +- Re: Simple string conversion from UCS2 to ISO8859-11Lawrence D'Oliveiro
23 Feb 25 i i    `- Re: Simple string conversion from UCS2 to ISO8859-11Waldek Hebisch
22 Feb 25 i +- Re: Simple string conversion from UCS2 to ISO8859-11Richard Damon
22 Feb 25 i `* Re: Simple string conversion from UCS2 to ISO8859-110Lawrence D'Oliveiro
22 Feb 25 i  `* Re: Simple string conversion from UCS2 to ISO8859-19Janis Papanagnou
22 Feb 25 i   +* Re: Simple string conversion from UCS2 to ISO8859-13Lawrence D'Oliveiro
22 Feb 25 i   i`* Re: Simple string conversion from UCS2 to ISO8859-12Janis Papanagnou
22 Feb 25 i   i `- Re: Simple string conversion from UCS2 to ISO8859-11Lawrence D'Oliveiro
23 Feb 25 i   +- Re: Simple string conversion from UCS2 to ISO8859-11James Kuyper
23 Feb 25 i   +- Re: Simple string conversion from UCS2 to ISO8859-11Lawrence D'Oliveiro
23 Feb 25 i   `* Re: Simple string conversion from UCS2 to ISO8859-13Kaz Kylheku
24 Feb 25 i    `* Re: Simple string conversion from UCS2 to ISO8859-12Janis Papanagnou
24 Feb 25 i     `- Re: Simple string conversion from UCS2 to ISO8859-11Lawrence D'Oliveiro
21 Feb 25 +* Re: Simple string conversion from UCS2 to ISO8859-12David Brown
21 Feb 25 i`- Re: Simple string conversion from UCS2 to ISO8859-11pozz
21 Feb 25 +* Re: Simple string conversion from UCS2 to ISO8859-130Keith Thompson
22 Feb 25 i`* Re: Simple string conversion from UCS2 to ISO8859-129David Brown
24 Feb 25 i `* Re: Simple string conversion from UCS2 to ISO8859-128pozz
24 Feb 25 i  `* Re: Simple string conversion from UCS2 to ISO8859-127Lawrence D'Oliveiro
25 Feb 25 i   +* Re: Simple string conversion from UCS2 to ISO8859-12pozz
25 Feb 25 i   i`- Re: Simple string conversion from UCS2 to ISO8859-11Lawrence D'Oliveiro
25 Feb 25 i   `* Re: Simple string conversion from UCS2 to ISO8859-124pozz
25 Feb 25 i    `* Re: Simple string conversion from UCS2 to ISO8859-123Richard Damon
25 Feb 25 i     `* Re: Simple string conversion from UCS2 to ISO8859-122pozz
25 Feb 25 i      +* Re: Simple string conversion from UCS2 to ISO8859-115David Brown
26 Feb 25 i      i`* [OT] Standards (was Re: Simple string conversion from UCS2 to ISO8859-1)14Janis Papanagnou
26 Feb 25 i      i +* Re: [OT] Standards (was Re: Simple string conversion from UCS2 to ISO8859-1)2David Brown
26 Feb 25 i      i i`- Re: [OT] Standards (was Re: Simple string conversion from UCS2 to ISO8859-1)1Janis Papanagnou
26 Feb 25 i      i `* Re: Standards (was Re: Simple string conversion from UCS2 to ISO8859-1)11Lawrence D'Oliveiro
27 Feb 25 i      i  `* Re: Standards (was Re: Simple string conversion from UCS2 to ISO8859-1)10Janis Papanagnou
27 Feb 25 i      i   `* Re: Standards (was Re: Simple string conversion from UCS2 to ISO8859-1)9David Brown
27 Feb 25 i      i    +- Re: Standards (was Re: Simple string conversion from UCS2 to ISO8859-1)1Richard Heathfield
27 Feb 25 i      i    +* Re: Standards (was Re: Simple string conversion from UCS2 to ISO8859-1)5bart
28 Feb 25 i      i    i+* Re: Standards (was Re: Simple string conversion from UCS2 to ISO8859-1)2Lawrence D'Oliveiro
28 Feb 25 i      i    ii`- Re: Standards (was Re: Simple string conversion from UCS2 to ISO8859-1)1Janis Papanagnou
28 Feb 25 i      i    i+- Re: Standards (was Re: Simple string conversion from UCS2 to ISO8859-1)1James Kuyper
28 Feb 25 i      i    i`- Re: Standards (was Re: Simple string conversion from UCS2 to ISO8859-1)1David Brown
28 Feb 25 i      i    `* Re: Standards (was Re: Simple string conversion from UCS2 to ISO8859-1)2Janis Papanagnou
28 Feb 25 i      i     `- Re: Standards (was Re: Simple string conversion from UCS2 to ISO8859-1)1David Brown
25 Feb 25 i      +* Re: Simple string conversion from UCS2 to ISO8859-13Lawrence D'Oliveiro
25 Feb 25 i      i+- Re: Simple string conversion from UCS2 to ISO8859-11pozz
26 Feb 25 i      i`- Re: Simple string conversion from UCS2 to ISO8859-11Richard Damon
26 Feb 25 i      `* Re: Simple string conversion from UCS2 to ISO8859-13Lawrence D'Oliveiro
26 Feb 25 i       `* Re: Simple string conversion from UCS2 to ISO8859-12Keith Thompson
26 Feb 25 i        `- Re: Simple string conversion from UCS2 to ISO8859-11David Brown
22 Feb 25 +- Re: Simple string conversion from UCS2 to ISO8859-11Kaz Kylheku
25 Feb 25 +- Re: Simple string conversion from UCS2 to ISO8859-11Richard Harnden
1 Mar 25 `- Re: Simple string conversion from UCS2 to ISO8859-11Geoff

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal