Convertiți caracterele cu două octeți în php-stack overflow în rusă

Spuneți-mi, vă rog, cum pot traduce un caracter de două octeți de la o codificare la alta? de la utf-8 la cp1251 pe php. Ie să spunem că vreau să convertesc litera "g" de la utf-8 la cp1251. În măsura în care înțeleg, am două caractere [syntax = php] P [/ sintaxa] și [syntax = php] i [/ sintaxa], adică două octeți și cum pot acum să le dau fold sau să le convertesc într-o reprezentare zecimală, apoi să efectuez unele acțiuni, de exemplu, să scadă 848 pentru a obține același număr în cp1251







Metoda, mai degrabă decât funcțiile gata făcute

Setați Feb 6 '13 la ora 1:06

Simbolurile utf-8 ar trebui traduse în codurile ucs și ele (dacă este posibil) în cp1251. Firește că nu toate ucs-urile (de exemplu: latin-1, pseudographics, hieroglife, etc.) pot fi traduse în cp1251.







Cum se traduce utf-8 în ucs.

Ne uităm la primul bit (semn) al octetului utf-8. Dacă aceasta este 0, codul ucs este egal cu valoarea acestui byte (acesta este ascii).

Dacă primii doi biți sunt 10 sau valoarea octetului este 0xff sau 0xfe, atunci aceasta este o eroare în utf-8.

Acum, să analizăm biții de octet ridicat. Selectați mai multe 1, apoi unul 0. Numărul de unități este egal cu numărul de octeți utf-8, codificând ucs. Restul octetului reprezintă biții de ordin înalt ai ucs-urilor codate. În acest caz, toți octeții următori ai acestui simbol trebuie să înceapă cu 10, iar restul de 6 biți codifică următoarea parte a ucs-urilor.

Toate caracterele chirilice sunt codate de 2 octeți utf-8. De exemplu, rusa A (codul ucs 0x410) în utf-8 este 2 octeți 0xd0 0x90

Un alt exemplu este simbolul #

De fapt, este mai rapid să scrieți un program (este mai ușor pentru mine în C, dar sunteți interesat de PPP), decât să-l explicați în limba rusă.

Pentru 2 octeți în str [], primind în b1 primele 5 biți, iar în b2 ultimele 6

sau dacă nu există operațiuni de biți în PCP (sper că restul diviziunii există), atunci







Articole similare

Trimiteți-le prietenilor: