/* Some conversion functions for handling UTF-8 * * copyright Marcoen Hirschberg (2004,2005) * * I got all the info from: * http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 * and * http://en.wikipedia.org/wiki/Unicode */ #define CODEPAGE_DIR "/.rockbox/codepages" #define MAX_CP_TABLE_SIZE 32768 #define MASK 0xC0 /* 11000000 */ #define COMP 0x80 /* 10x */ /* Encode a UCS value as UTF-8 and return a pointer after this UTF-8 char. */ unsigned char* utf8encode(unsigned long ucs, unsigned char *utf8); unsigned char* iso_decode(const unsigned char *latin1, unsigned char *utf8, int cp, int count); unsigned char* utf16LEdecode(const unsigned char *utf16, unsigned char *utf8, int count); unsigned char* utf16BEdecode(const unsigned char *utf16, unsigned char *utf8, int count); unsigned char* utf16decode(const unsigned char *utf16, unsigned char *utf8, unsigned int count); unsigned long utf8length(const unsigned char *utf8); const unsigned char* utf8decode(const unsigned char *utf8, unsigned short *ucs); void set_codepage(int cp); int utf8seek(const unsigned char* utf8, int offset);