Forum » Programiranje » Unicode
Unicode
losnah ::
Prvic sem hotu probat kaj je unicode in sem odletu. Neki mi noce delat.
#include "stdio.h"
#include "wchar.h"
#include "tchar.h"
#define _UNICODE
int _tmain()
{
FILE *stream;
wchar_t *string = L"Hello World";
stream = _wfopen(L"c:\\test.txt", L"w");
fwprintf(stream, L"%s\n", string);
fclose(stream);
return 0;
}
To sem napisu pa neki ne nardi prov. V fajl zapise samo "Hello World". Ko pa odprem notepad pa tm shranm dokument kot Unicode, pa mi v fajl shran "..H.e.l.l.o. .W.o.r.l.d...".
Kaj delam narobe.
"
#include "stdio.h"
#include "wchar.h"
#include "tchar.h"
#define _UNICODE
int _tmain()
{
FILE *stream;
wchar_t *string = L"Hello World";
stream = _wfopen(L"c:\\test.txt", L"w");
fwprintf(stream, L"%s\n", string);
fclose(stream);
return 0;
}
To sem napisu pa neki ne nardi prov. V fajl zapise samo "Hello World". Ko pa odprem notepad pa tm shranm dokument kot Unicode, pa mi v fajl shran "..H.e.l.l.o. .W.o.r.l.d...".
Kaj delam narobe.
"
DMouse ::
Ta tvoj file odpri v enem hexviewerju pa boš takoj videl, ali je shranjeno kot unicode ali ne (unicode ima na začetku dva dodatna byta, odvisno od različice unicode)
P.S.: sicer ne znam kej preveč C++, ampak v C se mi zdi, da mora za #define IME biti še neka konstanta
P.S.: sicer ne znam kej preveč C++, ampak v C se mi zdi, da mora za #define IME biti še neka konstanta
Zgodovina sprememb…
- spremenil: DMouse ()
CCfly ::
P.S.: sicer ne znam kej preveč C++, ampak v C se mi zdi, da mora za #define IME biti še neka konstanta
V tem primeru imas definiran makro _UNICODE, ki je uporaben za #ifdef _UNICODE / #ifndef _UNICODE, s cimer se lahko izognes nekaterim grdim napakam pri prevajanju.
V tem primeru imas definiran makro _UNICODE, ki je uporaben za #ifdef _UNICODE / #ifndef _UNICODE, s cimer se lahko izognes nekaterim grdim napakam pri prevajanju.
losnah ::
Sej sm odpru s Hex WorkShop. Pa je notr zapisan samo ASCII: Hello World, ce pa z notepadom odprem fajl in ga shranm kot UNICODE mi pa shran ASCII: ..H.e.l.l.o. .W.o.r.l.d..... .
CCfly: V tem primeru imas definiran makro _UNICODE, ki je uporaben za #ifdef _UNICODE / #ifndef _UNICODE, s cimer se lahko izognes nekaterim grdim napakam pri prevajanju.
Kaj pa morem narest.
#ifndef _UNICODE
#undef _MBSC
#define _UNICODE
#endif
Aja men se zmeri ne dela.
CCfly: V tem primeru imas definiran makro _UNICODE, ki je uporaben za #ifdef _UNICODE / #ifndef _UNICODE, s cimer se lahko izognes nekaterim grdim napakam pri prevajanju.
Kaj pa morem narest.
#ifndef _UNICODE
#undef _MBSC
#define _UNICODE
#endif
Aja men se zmeri ne dela.
CCfly ::
#ifndef _UNICODE
#undef _MBSC
#define _UNICODE
#endif
To je za Windowse pravilno ja. Moj komentar je bil misljen bolj tistemu ki je rekel da rabis se konstanto. Drugace ti pa ne morem pomagati pri Unicode v Windows, se bolj na Linuxu drzim.
Pravzaprav tudi meni izpise samo ASCII.
#include "stdio.h"
#include "wchar.h"
#include "locale.h"
int main(void) {
FILE *out;
setlocale(LC_ALL, "");
out = fopen("myFile", "w");
fwprintf(out, L"Hello world");
fclose(out);
}
Ce najdes resitev se priporocam.
losnah ::
Ok se eno vprasanje.
Zdej mam zapisan v fajlu "H.e.l.l.o. .W.o.r.l.d..." . Ce pa v notepadu izberem, shrani kot
Unicode, pa doda spredi se dve pikce "..H.e.l.l.o. .W.o.r.l.d..." prvi dve pikci imata vrednost 0xFFFE.
Kaj sta ti dve pikci, kaj pomenita, a sta pomembni, in kako jest to nardim v programu.
Zdej mam zapisan v fajlu "H.e.l.l.o. .W.o.r.l.d..." . Ce pa v notepadu izberem, shrani kot
Unicode, pa doda spredi se dve pikce "..H.e.l.l.o. .W.o.r.l.d..." prvi dve pikci imata vrednost 0xFFFE.
Kaj sta ti dve pikci, kaj pomenita, a sta pomembni, in kako jest to nardim v programu.
Vesoljc ::
en char (znak) pri ascii tabelci zadede en byte, pri unicode-u pa 2 byta...
zato je pri ascii 'A' = 65 dec ali 41 hex
pri unicode-u pa je to izgleda 41 00 v hex
FF FE pa je verjento le nek ID ki pove da gre za unicode...
naredi en short no nastavi to hex vrednost FF FE ozirom FE FF = 65279 ter ga zapiši na začetek... imho :)
zato je pri ascii 'A' = 65 dec ali 41 hex
pri unicode-u pa je to izgleda 41 00 v hex
FF FE pa je verjento le nek ID ki pove da gre za unicode...
naredi en short no nastavi to hex vrednost FF FE ozirom FE FF = 65279 ter ga zapiši na začetek... imho :)
Abnormal behavior of abnormal brain makes me normal...
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Unicode 8.0.0 prinaša več kot sedem tisoč novih znakovOddelek: Novice / Ostala programska oprema | 35667 (30146) | johnnyyy |
» | Nov simbol za rupijo ali kako dolgo traja vključitev znaka v Unicode (strani: 1 2 )Oddelek: Novice / Ostala programska oprema | 24575 (23390) | ahac |
» | [C++] Slovenski znaki v Command PromptuOddelek: Programiranje | 3341 (3045) | Makronaut |
» | [C++] Unicode, Utf...Oddelek: Programiranje | 1509 (1392) | Matako |
» | Vprasanje glede izdelave web pagaOddelek: Izdelava spletišč | 1345 (1198) | Sahel |