mirror of https://github.com/postgres/postgres
parent
2b0bb797ec
commit
e7fb9f18bf
@ -0,0 +1,126 @@ |
||||
static pg_utf_to_local ULmapWIN1252[ 124 ] = { |
||||
{0x0000, 0x0081}, |
||||
{0xc2a0, 0x00a0}, |
||||
{0xc2a1, 0x00a1}, |
||||
{0xc2a2, 0x00a2}, |
||||
{0xc2a3, 0x00a3}, |
||||
{0xc2a4, 0x00a4}, |
||||
{0xc2a5, 0x00a5}, |
||||
{0xc2a6, 0x00a6}, |
||||
{0xc2a7, 0x00a7}, |
||||
{0xc2a8, 0x00a8}, |
||||
{0xc2a9, 0x00a9}, |
||||
{0xc2aa, 0x00aa}, |
||||
{0xc2ab, 0x00ab}, |
||||
{0xc2ac, 0x00ac}, |
||||
{0xc2ad, 0x00ad}, |
||||
{0xc2ae, 0x00ae}, |
||||
{0xc2af, 0x00af}, |
||||
{0xc2b0, 0x00b0}, |
||||
{0xc2b1, 0x00b1}, |
||||
{0xc2b2, 0x00b2}, |
||||
{0xc2b3, 0x00b3}, |
||||
{0xc2b4, 0x00b4}, |
||||
{0xc2b5, 0x00b5}, |
||||
{0xc2b6, 0x00b6}, |
||||
{0xc2b7, 0x00b7}, |
||||
{0xc2b8, 0x00b8}, |
||||
{0xc2b9, 0x00b9}, |
||||
{0xc2ba, 0x00ba}, |
||||
{0xc2bb, 0x00bb}, |
||||
{0xc2bc, 0x00bc}, |
||||
{0xc2bd, 0x00bd}, |
||||
{0xc2be, 0x00be}, |
||||
{0xc2bf, 0x00bf}, |
||||
{0xc380, 0x00c0}, |
||||
{0xc381, 0x00c1}, |
||||
{0xc382, 0x00c2}, |
||||
{0xc383, 0x00c3}, |
||||
{0xc384, 0x00c4}, |
||||
{0xc385, 0x00c5}, |
||||
{0xc386, 0x00c6}, |
||||
{0xc387, 0x00c7}, |
||||
{0xc388, 0x00c8}, |
||||
{0xc389, 0x00c9}, |
||||
{0xc38a, 0x00ca}, |
||||
{0xc38b, 0x00cb}, |
||||
{0xc38c, 0x00cc}, |
||||
{0xc38d, 0x00cd}, |
||||
{0xc38e, 0x00ce}, |
||||
{0xc38f, 0x00cf}, |
||||
{0xc390, 0x00d0}, |
||||
{0xc391, 0x00d1}, |
||||
{0xc392, 0x00d2}, |
||||
{0xc393, 0x00d3}, |
||||
{0xc394, 0x00d4}, |
||||
{0xc395, 0x00d5}, |
||||
{0xc396, 0x00d6}, |
||||
{0xc397, 0x00d7}, |
||||
{0xc398, 0x00d8}, |
||||
{0xc399, 0x00d9}, |
||||
{0xc39a, 0x00da}, |
||||
{0xc39b, 0x00db}, |
||||
{0xc39c, 0x00dc}, |
||||
{0xc39d, 0x00dd}, |
||||
{0xc39e, 0x00de}, |
||||
{0xc39f, 0x00df}, |
||||
{0xc3a0, 0x00e0}, |
||||
{0xc3a1, 0x00e1}, |
||||
{0xc3a2, 0x00e2}, |
||||
{0xc3a3, 0x00e3}, |
||||
{0xc3a4, 0x00e4}, |
||||
{0xc3a5, 0x00e5}, |
||||
{0xc3a6, 0x00e6}, |
||||
{0xc3a7, 0x00e7}, |
||||
{0xc3a8, 0x00e8}, |
||||
{0xc3a9, 0x00e9}, |
||||
{0xc3aa, 0x00ea}, |
||||
{0xc3ab, 0x00eb}, |
||||
{0xc3ac, 0x00ec}, |
||||
{0xc3ad, 0x00ed}, |
||||
{0xc3ae, 0x00ee}, |
||||
{0xc3af, 0x00ef}, |
||||
{0xc3b0, 0x00f0}, |
||||
{0xc3b1, 0x00f1}, |
||||
{0xc3b2, 0x00f2}, |
||||
{0xc3b3, 0x00f3}, |
||||
{0xc3b4, 0x00f4}, |
||||
{0xc3b5, 0x00f5}, |
||||
{0xc3b6, 0x00f6}, |
||||
{0xc3b7, 0x00f7}, |
||||
{0xc3b8, 0x00f8}, |
||||
{0xc3b9, 0x00f9}, |
||||
{0xc3ba, 0x00fa}, |
||||
{0xc3bb, 0x00fb}, |
||||
{0xc3bc, 0x00fc}, |
||||
{0xc3bd, 0x00fd}, |
||||
{0xc3be, 0x00fe}, |
||||
{0xc3bf, 0x00ff}, |
||||
{0xc592, 0x008c}, |
||||
{0xc593, 0x009c}, |
||||
{0xc5a0, 0x008a}, |
||||
{0xc5a1, 0x009a}, |
||||
{0xc5b8, 0x009f}, |
||||
{0xc5bd, 0x008e}, |
||||
{0xc5be, 0x009e}, |
||||
{0xc692, 0x0083}, |
||||
{0xcb86, 0x0088}, |
||||
{0xcb9c, 0x0098}, |
||||
{0xe28093, 0x0096}, |
||||
{0xe28094, 0x0097}, |
||||
{0xe28098, 0x0091}, |
||||
{0xe28099, 0x0092}, |
||||
{0xe2809a, 0x0082}, |
||||
{0xe2809c, 0x0093}, |
||||
{0xe2809d, 0x0094}, |
||||
{0xe2809e, 0x0084}, |
||||
{0xe280a0, 0x0086}, |
||||
{0xe280a1, 0x0087}, |
||||
{0xe280a2, 0x0095}, |
||||
{0xe280a6, 0x0085}, |
||||
{0xe280b0, 0x0089}, |
||||
{0xe280b9, 0x008b}, |
||||
{0xe280ba, 0x009b}, |
||||
{0xe282ac, 0x0080}, |
||||
{0xe284a2, 0x0099} |
||||
}; |
@ -0,0 +1,130 @@ |
||||
static pg_local_to_utf LUmapWIN1252[ 128 ] = { |
||||
{0x0080, 0xe282ac}, |
||||
{0x0081, 0x0000}, |
||||
{0x0082, 0xe2809a}, |
||||
{0x0083, 0xc692}, |
||||
{0x0084, 0xe2809e}, |
||||
{0x0085, 0xe280a6}, |
||||
{0x0086, 0xe280a0}, |
||||
{0x0087, 0xe280a1}, |
||||
{0x0088, 0xcb86}, |
||||
{0x0089, 0xe280b0}, |
||||
{0x008a, 0xc5a0}, |
||||
{0x008b, 0xe280b9}, |
||||
{0x008c, 0xc592}, |
||||
{0x008d, 0x0000}, |
||||
{0x008e, 0xc5bd}, |
||||
{0x008f, 0x0000}, |
||||
{0x0090, 0x0000}, |
||||
{0x0091, 0xe28098}, |
||||
{0x0092, 0xe28099}, |
||||
{0x0093, 0xe2809c}, |
||||
{0x0094, 0xe2809d}, |
||||
{0x0095, 0xe280a2}, |
||||
{0x0096, 0xe28093}, |
||||
{0x0097, 0xe28094}, |
||||
{0x0098, 0xcb9c}, |
||||
{0x0099, 0xe284a2}, |
||||
{0x009a, 0xc5a1}, |
||||
{0x009b, 0xe280ba}, |
||||
{0x009c, 0xc593}, |
||||
{0x009d, 0x0000}, |
||||
{0x009e, 0xc5be}, |
||||
{0x009f, 0xc5b8}, |
||||
{0x00a0, 0xc2a0}, |
||||
{0x00a1, 0xc2a1}, |
||||
{0x00a2, 0xc2a2}, |
||||
{0x00a3, 0xc2a3}, |
||||
{0x00a4, 0xc2a4}, |
||||
{0x00a5, 0xc2a5}, |
||||
{0x00a6, 0xc2a6}, |
||||
{0x00a7, 0xc2a7}, |
||||
{0x00a8, 0xc2a8}, |
||||
{0x00a9, 0xc2a9}, |
||||
{0x00aa, 0xc2aa}, |
||||
{0x00ab, 0xc2ab}, |
||||
{0x00ac, 0xc2ac}, |
||||
{0x00ad, 0xc2ad}, |
||||
{0x00ae, 0xc2ae}, |
||||
{0x00af, 0xc2af}, |
||||
{0x00b0, 0xc2b0}, |
||||
{0x00b1, 0xc2b1}, |
||||
{0x00b2, 0xc2b2}, |
||||
{0x00b3, 0xc2b3}, |
||||
{0x00b4, 0xc2b4}, |
||||
{0x00b5, 0xc2b5}, |
||||
{0x00b6, 0xc2b6}, |
||||
{0x00b7, 0xc2b7}, |
||||
{0x00b8, 0xc2b8}, |
||||
{0x00b9, 0xc2b9}, |
||||
{0x00ba, 0xc2ba}, |
||||
{0x00bb, 0xc2bb}, |
||||
{0x00bc, 0xc2bc}, |
||||
{0x00bd, 0xc2bd}, |
||||
{0x00be, 0xc2be}, |
||||
{0x00bf, 0xc2bf}, |
||||
{0x00c0, 0xc380}, |
||||
{0x00c1, 0xc381}, |
||||
{0x00c2, 0xc382}, |
||||
{0x00c3, 0xc383}, |
||||
{0x00c4, 0xc384}, |
||||
{0x00c5, 0xc385}, |
||||
{0x00c6, 0xc386}, |
||||
{0x00c7, 0xc387}, |
||||
{0x00c8, 0xc388}, |
||||
{0x00c9, 0xc389}, |
||||
{0x00ca, 0xc38a}, |
||||
{0x00cb, 0xc38b}, |
||||
{0x00cc, 0xc38c}, |
||||
{0x00cd, 0xc38d}, |
||||
{0x00ce, 0xc38e}, |
||||
{0x00cf, 0xc38f}, |
||||
{0x00d0, 0xc390}, |
||||
{0x00d1, 0xc391}, |
||||
{0x00d2, 0xc392}, |
||||
{0x00d3, 0xc393}, |
||||
{0x00d4, 0xc394}, |
||||
{0x00d5, 0xc395}, |
||||
{0x00d6, 0xc396}, |
||||
{0x00d7, 0xc397}, |
||||
{0x00d8, 0xc398}, |
||||
{0x00d9, 0xc399}, |
||||
{0x00da, 0xc39a}, |
||||
{0x00db, 0xc39b}, |
||||
{0x00dc, 0xc39c}, |
||||
{0x00dd, 0xc39d}, |
||||
{0x00de, 0xc39e}, |
||||
{0x00df, 0xc39f}, |
||||
{0x00e0, 0xc3a0}, |
||||
{0x00e1, 0xc3a1}, |
||||
{0x00e2, 0xc3a2}, |
||||
{0x00e3, 0xc3a3}, |
||||
{0x00e4, 0xc3a4}, |
||||
{0x00e5, 0xc3a5}, |
||||
{0x00e6, 0xc3a6}, |
||||
{0x00e7, 0xc3a7}, |
||||
{0x00e8, 0xc3a8}, |
||||
{0x00e9, 0xc3a9}, |
||||
{0x00ea, 0xc3aa}, |
||||
{0x00eb, 0xc3ab}, |
||||
{0x00ec, 0xc3ac}, |
||||
{0x00ed, 0xc3ad}, |
||||
{0x00ee, 0xc3ae}, |
||||
{0x00ef, 0xc3af}, |
||||
{0x00f0, 0xc3b0}, |
||||
{0x00f1, 0xc3b1}, |
||||
{0x00f2, 0xc3b2}, |
||||
{0x00f3, 0xc3b3}, |
||||
{0x00f4, 0xc3b4}, |
||||
{0x00f5, 0xc3b5}, |
||||
{0x00f6, 0xc3b6}, |
||||
{0x00f7, 0xc3b7}, |
||||
{0x00f8, 0xc3b8}, |
||||
{0x00f9, 0xc3b9}, |
||||
{0x00fa, 0xc3ba}, |
||||
{0x00fb, 0xc3bb}, |
||||
{0x00fc, 0xc3bc}, |
||||
{0x00fd, 0xc3bd}, |
||||
{0x00fe, 0xc3be}, |
||||
{0x00ff, 0xc3bf} |
||||
}; |
@ -0,0 +1,12 @@ |
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/utf8_and_win1252/Makefile,v 1.3 2005/03/14 18:31:22 momjian Exp $
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
subdir = src/backend/utils/mb/conversion_procs/utf8_and_win1252
|
||||
top_builddir = ../../../../../..
|
||||
include $(top_builddir)/src/Makefile.global |
||||
|
||||
NAME := utf8_and_win1252
|
||||
|
||||
include $(srcdir)/../proc.mk |
@ -0,0 +1,69 @@ |
||||
/*-------------------------------------------------------------------------
|
||||
* |
||||
* WIN1252 and UTF8 |
||||
* |
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group |
||||
* Portions Copyright (c) 1994, Regents of the University of California |
||||
* |
||||
* IDENTIFICATION |
||||
* $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/utf8_and_win1252/utf8_and_win1252.c,v 1.3 2005/03/14 18:31:22 momjian Exp $ |
||||
* |
||||
*------------------------------------------------------------------------- |
||||
*/ |
||||
|
||||
#include "postgres.h" |
||||
#include "fmgr.h" |
||||
#include "mb/pg_wchar.h" |
||||
#include "../../Unicode/utf8_to_win1252.map" |
||||
#include "../../Unicode/win1252_to_utf8.map" |
||||
|
||||
PG_FUNCTION_INFO_V1(utf8_to_win1252); |
||||
PG_FUNCTION_INFO_V1(win1252_to_utf8); |
||||
|
||||
extern Datum utf8_to_win1252(PG_FUNCTION_ARGS); |
||||
extern Datum win1252_to_utf8(PG_FUNCTION_ARGS); |
||||
|
||||
/* ----------
|
||||
* conv_proc( |
||||
* INTEGER, -- source encoding id |
||||
* INTEGER, -- destination encoding id |
||||
* CSTRING, -- source string (null terminated C string) |
||||
* CSTRING, -- destination string (null terminated C string) |
||||
* INTEGER -- source string length |
||||
* ) returns VOID; |
||||
* ---------- |
||||
*/ |
||||
|
||||
Datum |
||||
utf8_to_win1252(PG_FUNCTION_ARGS) |
||||
{ |
||||
unsigned char *src = PG_GETARG_CSTRING(2); |
||||
unsigned char *dest = PG_GETARG_CSTRING(3); |
||||
int len = PG_GETARG_INT32(4); |
||||
|
||||
Assert(PG_GETARG_INT32(0) == PG_UTF8); |
||||
Assert(PG_GETARG_INT32(1) == PG_WIN1252); |
||||
Assert(len >= 0); |
||||
|
||||
UtfToLocal(src, dest, ULmapWIN1252, |
||||
sizeof(ULmapWIN1252) / sizeof(pg_utf_to_local), len); |
||||
|
||||
PG_RETURN_VOID(); |
||||
} |
||||
|
||||
Datum |
||||
win1252_to_utf8(PG_FUNCTION_ARGS) |
||||
{ |
||||
unsigned char *src = PG_GETARG_CSTRING(2); |
||||
unsigned char *dest = PG_GETARG_CSTRING(3); |
||||
int len = PG_GETARG_INT32(4); |
||||
|
||||
Assert(PG_GETARG_INT32(0) == PG_WIN1252); |
||||
Assert(PG_GETARG_INT32(1) == PG_UTF8); |
||||
Assert(len >= 0); |
||||
|
||||
LocalToUtf(src, dest, LUmapWIN1252, |
||||
sizeof(LUmapWIN1252) / sizeof(pg_local_to_utf), PG_WIN1252, len); |
||||
|
||||
PG_RETURN_VOID(); |
||||
} |
Loading…
Reference in new issue