» »

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.
"

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

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.

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 ::


#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.

Stripy ::

Izhodna datoteka mora biti tipa binary:

out = fopen("myFile", "wb");

losnah ::

Dela, Hvala.:D

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.

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 :)
Abnormal behavior of abnormal brain makes me normal...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Unicode 8.0.0 prinaša več kot sedem tisoč novih znakov

Oddelek: Novice / Ostala programska oprema
3834260 (28739) johnnyyy
»

Nov simbol za rupijo ali kako dolgo traja vključitev znaka v Unicode (strani: 1 2 )

Oddelek: Novice / Ostala programska oprema
5022396 (21211) ahac
»

[C++] Slovenski znaki v Command Promptu

Oddelek: Programiranje
133228 (2932) Makronaut
»

[C++] Unicode, Utf...

Oddelek: Programiranje
61425 (1308) Matako
»

Vprasanje glede izdelave web paga

Oddelek: Izdelava spletišč
81250 (1103) Sahel

Več podobnih tem