2
2
* conversion between client encoding and server internal encoding
3
3
* (currently mule internal code (mic) is used)
4
4
* Tatsuo Ishii
5
- * $Id: conv.c,v 1.11 1999/05/26 15:19:55 momjian Exp $
5
+ * WIN1250 client encoding support contributed by Pavel Behal
6
+ *
7
+ * $Id: conv.c,v 1.12 1999/07/11 22:47:20 ishii Exp $
8
+ *
9
+ *
6
10
*/
11
+
7
12
#include <stdio.h>
8
13
#include <string.h>
9
14
10
15
#include "mb/pg_wchar.h"
11
16
12
17
/*
13
- * convert bogus chars that cannot be represented in the current encoding
18
+ * convert bogus chars that cannot be represented in the current
19
+ encoding
14
20
* system.
15
21
*/
16
22
static void
@@ -557,7 +563,6 @@ mic2latin4(unsigned char *mic, unsigned char *p, int len)
557
563
{
558
564
mic2latin (mic ,p ,len ,LC_ISO8859_4 );
559
565
}
560
-
561
566
#ifdef NOT_USED
562
567
static void
563
568
latin52mic (unsignedchar * l ,unsignedchar * p ,int len )
@@ -724,7 +729,7 @@ mic2latin_with_table(
724
729
static void
725
730
iso2mic (unsignedchar * l ,unsignedchar * p ,int len )
726
731
{
727
- static char iso2koi []= {
732
+ static unsigned char iso2koi []= {
728
733
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
729
734
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
730
735
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
@@ -750,7 +755,7 @@ iso2mic(unsigned char *l, unsigned char *p, int len)
750
755
static void
751
756
mic2iso (unsignedchar * mic ,unsignedchar * p ,int len )
752
757
{
753
- static char koi2iso []= {
758
+ static unsigned char koi2iso []= {
754
759
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
755
760
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
756
761
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
@@ -776,7 +781,7 @@ mic2iso(unsigned char *mic, unsigned char *p, int len)
776
781
static void
777
782
win2mic (unsignedchar * l ,unsignedchar * p ,int len )
778
783
{
779
- static char win2koi []= {
784
+ static unsigned char win2koi []= {
780
785
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
781
786
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
782
787
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
@@ -802,7 +807,7 @@ win2mic(unsigned char *l, unsigned char *p, int len)
802
807
static void
803
808
mic2win (unsignedchar * mic ,unsignedchar * p ,int len )
804
809
{
805
- static char koi2win []= {
810
+ static unsigned char koi2win []= {
806
811
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
807
812
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
808
813
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
@@ -828,7 +833,7 @@ mic2win(unsigned char *mic, unsigned char *p, int len)
828
833
static void
829
834
alt2mic (unsignedchar * l ,unsignedchar * p ,int len )
830
835
{
831
- static char alt2koi []= {
836
+ static unsigned char alt2koi []= {
832
837
0xe1 ,0xe2 ,0xf7 ,0xe7 ,0xe4 ,0xe5 ,0xf6 ,0xfa ,
833
838
0xe9 ,0xea ,0xeb ,0xec ,0xed ,0xee ,0xef ,0xf0 ,
834
839
0xf2 ,0xf3 ,0xf4 ,0xf5 ,0xe6 ,0xe8 ,0xe3 ,0xfe ,
@@ -854,7 +859,7 @@ alt2mic(unsigned char *l, unsigned char *p, int len)
854
859
static void
855
860
mic2alt (unsignedchar * mic ,unsignedchar * p ,int len )
856
861
{
857
- static char koi2alt []= {
862
+ static unsigned char koi2alt []= {
858
863
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
859
864
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
860
865
0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,
@@ -880,6 +885,61 @@ mic2alt(unsigned char *mic, unsigned char *p, int len)
880
885
* end of Cyrillic support
881
886
*/
882
887
888
+
889
+ /*-----------------------------------------------------------------
890
+ * WIN1250
891
+ * Microsoft's CP1250(windows-1250)
892
+ *-----------------------------------------------------------------*/
893
+ static void
894
+ win12502mic (unsignedchar * l ,unsignedchar * p ,int len )
895
+ {
896
+ static unsignedchar win1250_2_iso88592 []= {
897
+ 0x80 ,0x81 ,0x82 ,0x83 ,0x84 ,0x85 ,0x86 ,0x87 ,
898
+ 0x88 ,0x89 ,0xA9 ,0x8B ,0xA6 ,0xAB ,0xAE ,0xAC ,
899
+ 0x90 ,0x91 ,0x92 ,0x93 ,0x94 ,0x95 ,0x96 ,0x97 ,
900
+ 0x98 ,0x99 ,0xB9 ,0x9B ,0xB6 ,0xBB ,0xBE ,0xBC ,
901
+ 0xA0 ,0xB7 ,0xA2 ,0xA3 ,0xA4 ,0xA1 ,0x00 ,0xA7 ,
902
+ 0xA8 ,0x00 ,0xAA ,0x00 ,0x00 ,0xAD ,0x00 ,0xAF ,
903
+ 0xB0 ,0x00 ,0xB2 ,0xB3 ,0xB4 ,0x00 ,0x00 ,0x00 ,
904
+ 0xB8 ,0xB1 ,0xBA ,0x00 ,0xA5 ,0xBD ,0xB5 ,0xBF ,
905
+ 0xC0 ,0xC1 ,0xC2 ,0xC3 ,0xC4 ,0xC5 ,0xC6 ,0xC7 ,
906
+ 0xC8 ,0xC9 ,0xCA ,0xCB ,0xCC ,0xCD ,0xCE ,0xCF ,
907
+ 0xD0 ,0xD1 ,0xD2 ,0xD3 ,0xD4 ,0xD5 ,0xD6 ,0xD7 ,
908
+ 0xD8 ,0xD9 ,0xDA ,0xDB ,0xDC ,0xDD ,0xDE ,0xDF ,
909
+ 0xE0 ,0xE1 ,0xE2 ,0xE3 ,0xE4 ,0xE5 ,0xE6 ,0xE7 ,
910
+ 0xE8 ,0xE9 ,0xEA ,0xEB ,0xEC ,0xED ,0xEE ,0xEF ,
911
+ 0xF0 ,0xF1 ,0xF2 ,0xF3 ,0xF4 ,0xF5 ,0xF6 ,0xF7 ,
912
+ 0xF8 ,0xF9 ,0xFA ,0xFB ,0xFC ,0xFD ,0xFE ,0xFF
913
+ };
914
+
915
+ latin2mic_with_table (l ,p ,len ,LC_ISO8859_2 ,win1250_2_iso88592 );
916
+ }
917
+ static void
918
+ mic2win1250 (unsignedchar * mic ,unsignedchar * p ,int len )
919
+ {
920
+ static unsignedchar iso88592_2_win1250 []= {
921
+ 0x80 ,0x81 ,0x82 ,0x83 ,0x84 ,0x85 ,0x86 ,0x87 ,
922
+ 0x88 ,0x89 ,0x00 ,0x8B ,0x00 ,0x00 ,0x00 ,0x00 ,
923
+ 0x90 ,0x91 ,0x92 ,0x93 ,0x94 ,0x95 ,0x96 ,0x97 ,
924
+ 0x98 ,0x99 ,0x00 ,0x9B ,0x00 ,0x00 ,0x00 ,0x00 ,
925
+ 0xA0 ,0xA5 ,0xA2 ,0xA3 ,0xA4 ,0xBC ,0x8C ,0xA7 ,
926
+ 0xA8 ,0x8A ,0xAA ,0x8D ,0x8F ,0xAD ,0x8E ,0xAF ,
927
+ 0xB0 ,0xB9 ,0xB2 ,0xB3 ,0xB4 ,0xBE ,0x9C ,0xA1 ,
928
+ 0xB8 ,0x9A ,0xBA ,0x9D ,0x9F ,0xBD ,0x9E ,0xBF ,
929
+ 0xC0 ,0xC1 ,0xC2 ,0xC3 ,0xC4 ,0xC5 ,0xC6 ,0xC7 ,
930
+ 0xC8 ,0xC9 ,0xCA ,0xCB ,0xCC ,0xCD ,0xCE ,0xCF ,
931
+ 0xD0 ,0xD1 ,0xD2 ,0xD3 ,0xD4 ,0xD5 ,0xD6 ,0xD7 ,
932
+ 0xD8 ,0xD9 ,0xDA ,0xDB ,0xDC ,0xDD ,0xDE ,0xDF ,
933
+ 0xE0 ,0xE1 ,0xE2 ,0xE3 ,0xE4 ,0xE5 ,0xE6 ,0xE7 ,
934
+ 0xE8 ,0xE9 ,0xEA ,0xEB ,0xEC ,0xED ,0xEE ,0xEF ,
935
+ 0xF0 ,0xF1 ,0xF2 ,0xF3 ,0xF4 ,0xF5 ,0xF6 ,0xF7 ,
936
+ 0xF8 ,0xF9 ,0xFA ,0xFB ,0xFC ,0xFD ,0xFE ,0xFF
937
+ };
938
+
939
+ mic2latin_with_table (mic ,p ,len ,LC_ISO8859_2 ,iso88592_2_win1250 );
940
+ }
941
+ /*-----------------------------------------------------------------*/
942
+
883
943
pg_encoding_conv_tbl pg_conv_tbl []= {
884
944
{SQL_ASCII ,"SQL_ASCII" ,0 ,ascii2mic ,mic2ascii },/* SQL/ACII */
885
945
{EUC_JP ,"EUC_JP" ,0 ,euc_jp2mic ,mic2euc_jp },/* EUC_JP */
@@ -898,5 +958,6 @@ pg_encoding_conv_tbl pg_conv_tbl[] = {
898
958
{ALT ,"ALT" ,0 ,alt2mic ,mic2alt },/* CP866 */
899
959
{SJIS ,"SJIS" ,1 ,sjis2mic ,mic2sjis },/* SJIS */
900
960
{BIG5 ,"BIG5" ,1 ,big52mic ,mic2big5 },/* Big5 */
961
+ {WIN1250 ,"WIN1250" ,1 ,win12502mic ,mic2win1250 },/* WIN 1250 */
901
962
{-1 ,"" ,0 ,0 ,0 }/* end mark */
902
963
};