05. november 2002 - 16:06
Der er
3 kommentarer og 1 løsning
Skifte codepage.
Hej Alle! Jeg har et program skrevet i Borland C++ Builder 5. Programmet opretter en alm. fstream og skriver nogle information ud på en fil. Nu er mit spørgsmål: Hvordan ændrer man den codepage fstream skriver med? Jeg vil gerne kunne skifte mellem forskellige. /Kring
Annonceindlæg fra Conscia
08. november 2002 - 14:56
#2
Jeg er nået til den konklusion, at jeg skulle lave den selv. Jeg har lavet følgende funktion: char * xlteString(char *s, char fromCP[4], char toCP[4]) { int idx; int len = strlen(s); FILE *cpFile; char cvtTbl[256]; char fileName[MAXPATH]; sprintf(fileName, "x%.3s_%.3s.xlt", fromCP, toCP); if ((cpFile = fopen(fileName, "rb")) == NULL || fread(&cvtTbl, sizeof(cvtTbl), 1, cpFile) != 1) { if (cpFile != NULL) fclose(cpFIle); return NULL; }; fclose(cpFile); for (idx = 0; idx < len; idx++) s[idx] = cvtTbl[s[idx]]; return s; } // xlteString Så skriver du bare streamFile << xlteString(info); i stedet for streamFile << info; .xlt filerne indeholder så 256 tegn, med den korrekte nye værdi for hvert tegn i den oprindelige CP: xasc_iso.xlt : Indeholder oversættelse fra ASCII til ISO9600 (DOS til Windows) xasc_ebc.xlt : Indeholder oversættelse fra ASCII til EBCDIC osv.
08. november 2002 - 15:43
#3
Du skriver selvfølgelig streamFile << xlteString(info, "ASC", "ISO"); // DOS til WINDOWS streamFile << xlteString(info, "ISO", "UNI"); // Windows til Unix/Linux
29. december 2002 - 21:19
#4
Dette spørgsmål skulle have været lukket for læææææænge siden! jeg har ikke fået testet dit forslag 100% soepro, men det virker troværdigt så du får point!