Forum » Programiranje » [PHP] charter set windows-1250
[PHP] charter set windows-1250
Blisk ::
Tukaj je del kode, ki zamenja določene znake z znaki windows-1252.
Ker sam nimam pojma o programiranju, bi prosil nekoga, če mi lahko pomaga, namreč, namesto windows-1252 bi rabil codeset windows-1250,
ker mi ne prikaže čšž in ČŠŽ, pač pa namesto tega pokaže ??? (vprašaje)
// Replace non-standard UTF-8 characters.
function _windows1252_replace($string)
{
$badchr = array(
"\x80", // EURO SIGN
"\x81", // UNDEFINED
"\x82", // SINGLE LOW-9 QUOTATION MARK
"\x83", // LATIN SMALL LETTER F WITH HOOK
"\x84", // DOUBLE LOW-9 QUOTATION MARK
"\x85", // HORIZONTAL ELLIPSIS
"\x86", // DAGGER
"\x87", // DOUBLE DAGGER
"\x88", // MODIFIER LETTER CIRCUMFLEX ACCENT
"\x89", // PER MILLE SIGN
"\x8A", // LATIN CAPITAL LETTER S WITH CARON
"\x8B", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
"\x8C", // LATIN CAPITAL LIGATURE OE
"\x8D", // UNDEFINED
"\x8E", // LATIN CAPITAL LETTER Z WITH CARON
"\x8F", // UNDEFINED
"\x90", // UNDEFINED
"\x91", // LEFT SINGLE QUOTATION MARK
"\x92", // RIGHT SINGLE QUOTATION MARK
"\x93", // LEFT DOUBLE QUOTATION MARK
"\x94", // RIGHT DOUBLE QUOTATION MARK
"\x95", // BULLET
"\x96", // EN DASH
"\x97", // EM DASH
"\x98", // SMALL TILDE
"\x99", // TRADE MARK SIGN
"\x9A", // LATIN SMALL LETTER S WITH CARON
"\x9B", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
"\x9C", // LATIN SMALL LIGATURE OE
"\x9D", // UNDEFINED
"\x9E", // LATIN SMALL LETTER Z WITH CARON
"\x9F" // LATIN CAPITAL LETTER Y WITH DIAERESIS
);
$goodchr = array(
"€", // EURO SIGN
"", // UNDEFINED
"‚", // SINGLE LOW-9 QUOTATION MARK
"ƒ", // LATIN SMALL LETTER F WITH HOOK
"„", // DOUBLE LOW-9 QUOTATION MARK
"…", // HORIZONTAL ELLIPSIS
"†", // DAGGER
"‡", // DOUBLE DAGGER
"ˆ", // MODIFIER LETTER CIRCUMFLEX ACCENT
"‰", // PER MILLE SIGN
"Š", // LATIN CAPITAL LETTER S WITH CARON
"‹", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
"Œ", // LATIN CAPITAL LIGATURE OE
"", // UNDEFINED
"Ž", // LATIN CAPITAL LETTER Z WITH CARON
"", // UNDEFINED
"", // UNDEFINED
"‘", // LEFT SINGLE QUOTATION MARK
"’", // RIGHT SINGLE QUOTATION MARK
"“", // LEFT DOUBLE QUOTATION MARK
"”", // RIGHT DOUBLE QUOTATION MARK
"•", // BULLET
"–", // EN DASH
"—", // EM DASH
"˜", // SMALL TILDE
"™", // TRADE MARK SIGN
"š", // LATIN SMALL LETTER S WITH CARON
"›", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
"œ", // LATIN SMALL LIGATURE OE
"", // UNDEFINED
"ž", // LATIN SMALL LETTER Z WITH CARON
"Ÿ" // LATIN CAPITAL LETTER Y WITH DIAERESIS
);
Ker sam nimam pojma o programiranju, bi prosil nekoga, če mi lahko pomaga, namreč, namesto windows-1252 bi rabil codeset windows-1250,
ker mi ne prikaže čšž in ČŠŽ, pač pa namesto tega pokaže ??? (vprašaje)
// Replace non-standard UTF-8 characters.
function _windows1252_replace($string)
{
$badchr = array(
"\x80", // EURO SIGN
"\x81", // UNDEFINED
"\x82", // SINGLE LOW-9 QUOTATION MARK
"\x83", // LATIN SMALL LETTER F WITH HOOK
"\x84", // DOUBLE LOW-9 QUOTATION MARK
"\x85", // HORIZONTAL ELLIPSIS
"\x86", // DAGGER
"\x87", // DOUBLE DAGGER
"\x88", // MODIFIER LETTER CIRCUMFLEX ACCENT
"\x89", // PER MILLE SIGN
"\x8A", // LATIN CAPITAL LETTER S WITH CARON
"\x8B", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
"\x8C", // LATIN CAPITAL LIGATURE OE
"\x8D", // UNDEFINED
"\x8E", // LATIN CAPITAL LETTER Z WITH CARON
"\x8F", // UNDEFINED
"\x90", // UNDEFINED
"\x91", // LEFT SINGLE QUOTATION MARK
"\x92", // RIGHT SINGLE QUOTATION MARK
"\x93", // LEFT DOUBLE QUOTATION MARK
"\x94", // RIGHT DOUBLE QUOTATION MARK
"\x95", // BULLET
"\x96", // EN DASH
"\x97", // EM DASH
"\x98", // SMALL TILDE
"\x99", // TRADE MARK SIGN
"\x9A", // LATIN SMALL LETTER S WITH CARON
"\x9B", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
"\x9C", // LATIN SMALL LIGATURE OE
"\x9D", // UNDEFINED
"\x9E", // LATIN SMALL LETTER Z WITH CARON
"\x9F" // LATIN CAPITAL LETTER Y WITH DIAERESIS
);
$goodchr = array(
"€", // EURO SIGN
"", // UNDEFINED
"‚", // SINGLE LOW-9 QUOTATION MARK
"ƒ", // LATIN SMALL LETTER F WITH HOOK
"„", // DOUBLE LOW-9 QUOTATION MARK
"…", // HORIZONTAL ELLIPSIS
"†", // DAGGER
"‡", // DOUBLE DAGGER
"ˆ", // MODIFIER LETTER CIRCUMFLEX ACCENT
"‰", // PER MILLE SIGN
"Š", // LATIN CAPITAL LETTER S WITH CARON
"‹", // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
"Œ", // LATIN CAPITAL LIGATURE OE
"", // UNDEFINED
"Ž", // LATIN CAPITAL LETTER Z WITH CARON
"", // UNDEFINED
"", // UNDEFINED
"‘", // LEFT SINGLE QUOTATION MARK
"’", // RIGHT SINGLE QUOTATION MARK
"“", // LEFT DOUBLE QUOTATION MARK
"”", // RIGHT DOUBLE QUOTATION MARK
"•", // BULLET
"–", // EN DASH
"—", // EM DASH
"˜", // SMALL TILDE
"™", // TRADE MARK SIGN
"š", // LATIN SMALL LETTER S WITH CARON
"›", // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
"œ", // LATIN SMALL LIGATURE OE
"", // UNDEFINED
"ž", // LATIN SMALL LETTER Z WITH CARON
"Ÿ" // LATIN CAPITAL LETTER Y WITH DIAERESIS
);
- spremenilo: snow ()
mHook ::
Tole je del za "naše" črke:
"\xC6", // Ć
"\xE6", // ć
"\xC8", // Č
"\xE8", // č
"\xD0", // Đ
"\xF0", // đ
"\x8A", // Š
"\x9A", // š
"\x8E", // Ž
"\x9E", // ž
Š in Ž bi ti morala delat, za ostalo pa ustrezno popravi/dodaj ustrezne znake.
Če ti niti Š in Ž ne delata, potem imaš problem še nekje drugje (npr. header,...).
"\xC6", // Ć
"\xE6", // ć
"\xC8", // Č
"\xE8", // č
"\xD0", // Đ
"\xF0", // đ
"\x8A", // Š
"\x9A", // š
"\x8E", // Ž
"\x9E", // ž
Š in Ž bi ti morala delat, za ostalo pa ustrezno popravi/dodaj ustrezne znake.
Če ti niti Š in Ž ne delata, potem imaš problem še nekje drugje (npr. header,...).
Zgodovina sprememb…
- spremenil: mHook ()
Blisk ::
ne delajo, pa ker se ne spoznam na programiranje, niti ne vem kaj in kje pogledat, našel sem ta del v fajlu in predvidevam da je to to.
Kaj moraš še poiskati?
Kaj moraš še poiskati?
overlord_tm ::
Ko pogledaš izvorno kodo strani (tisto v browserju), kak charset se pošlje v headerju?
Recimo st. ima:
Recimo st. ima:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
Blisk ::
Ok tole je sicer mal težko pogledat, ker dejansko je problem pri tem, da mi ta program, s katerim imam probleme vnaša RSS novice v poste.
Zato sem pogledal izvorno kodo enega posta, ki je vnešen z RSS in tam je v headerju
version="1.0" encoding="windows-1250"?>
Zato sem pogledal izvorno kodo enega posta, ki je vnešen z RSS in tam je v headerju
version="1.0" encoding="windows-1250"?>
mHook ::
Možna težavaj je tudi v HTTP header-ju (poglej z WireSharkom).
V php.ini je privzeto zakomentirana vrsta default_charset = "iso-8859-1".
To lahko popraviš v php.ini, ali pa z funkcijo header.
header("Content-type:application/rss+xml; Charset=windows-1250");
V php.ini je privzeto zakomentirana vrsta default_charset = "iso-8859-1".
To lahko popraviš v php.ini, ali pa z funkcijo header.
header("Content-type:application/rss+xml; Charset=windows-1250");
Blisk ::
php.ini imam nastavljeno na widows-1250, predvidevam, da zato v headerju tega ni treba popravljati!
mHook ::
Najverjetneje je problem v tem, da ti (predvidevam) MySQL vrača podatke v napačni kodni tabeli.
Spet "imaš" dve opciji.
Če nimaš dostopa do serverja (oz. my.cnf) takoj po povezavi pošlji na strežnik naslednji query:
SET NAMES cp1250;
(pred časom mi to ni delalo, tako da sem moral uporabiti naslednje tri SQLe:
SET character_set_connection = cp1250";
SET character_set_client = cp1250;
SET character_set_results = cp1250;
)
ali v my.cnf odsek [mysqld] nastaviš tole:
init-connect='SET NAMES cp1250'
ali
default-character-set=cp1250
Če ti pa še to ne dela, preveri collation na bazi, tabelah in stolpcih (če je UTF, cp1250 ali latin2 bi moralo biti ok).
več: 9.4. Connection Character Sets and Collations oz. 9 Character Set Supportj
Spet "imaš" dve opciji.
Če nimaš dostopa do serverja (oz. my.cnf) takoj po povezavi pošlji na strežnik naslednji query:
SET NAMES cp1250;
(pred časom mi to ni delalo, tako da sem moral uporabiti naslednje tri SQLe:
SET character_set_connection = cp1250";
SET character_set_client = cp1250;
SET character_set_results = cp1250;
)
ali v my.cnf odsek [mysqld] nastaviš tole:
init-connect='SET NAMES cp1250'
ali
default-character-set=cp1250
Če ti pa še to ne dela, preveri collation na bazi, tabelah in stolpcih (če je UTF, cp1250 ali latin2 bi moralo biti ok).
več: 9.4. Connection Character Sets and Collations oz. 9 Character Set Supportj
Blisk ::
Žal ne deluje nič od tega.
Nastavil sem v my.cnf
init-connect='SET NAMES cp1250'
ali
default-character-set=cp1250
karkoli od tega ne deluje
nakar sem spremenil kodo tabele v mysql na
cp1250 ali latin2
pa prav tako ne deluje.
Nastavil sem v my.cnf
init-connect='SET NAMES cp1250'
ali
default-character-set=cp1250
karkoli od tega ne deluje
nakar sem spremenil kodo tabele v mysql na
cp1250 ali latin2
pa prav tako ne deluje.
overlord_tm ::
Kaj pa če bi ves output spustil skozi iconv?
Drugače pa, probaj se v browserju poigrat z ročnim nastavlanjem encodinga, da ugotoviš v katerem kodiranju ti sploh izpiše ;)
Drugače pa, probaj se v browserju poigrat z ročnim nastavlanjem encodinga, da ugotoviš v katerem kodiranju ti sploh izpiše ;)
Blisk ::
Glede na to, da nimam pojma o programiranju, bi prosil če lahko malo bolj podrobne infromacije, kako to naredim.
TNX
TNX
mHook ::
Kaj pa če dodaš nekaj prek portala, da se zapiše v bazo, ali je potem ok prikazano.
Z vsem tem kar je napisano v tej temi, so lahko problematični podatki, še posebaj, če si jih uvozil prek DUMP sql stavkov.
Ali ti select iz baze pravilno vrne šumnike (npr. prek phpMyAdmina)?
Z vsem tem kar je napisano v tej temi, so lahko problematični podatki, še posebaj, če si jih uvozil prek DUMP sql stavkov.
Ali ti select iz baze pravilno vrne šumnike (npr. prek phpMyAdmina)?
mHook ::
če dam copy paste je ok, prek portala je isto, če se uvozi prek RSS
Kaj naj to pomeni? Da vse dela?
V čem je problem?
Blisk ::
mogoče sem malo neprimerno napisal.
Hotel sem rečt, če RSS novice skopiram v post, z copy paste, da takrat so čšž ok.
Če jih potegnem not prek fajla, ki vleče dol RSS in ga vnese v post, takrat pa ni čšž.
Tak da, bi prosil še kakšno dobr idejo, ker se mi res ne da vsak dan popravljati v texu čšžje.
Hotel sem rečt, če RSS novice skopiram v post, z copy paste, da takrat so čšž ok.
Če jih potegnem not prek fajla, ki vleče dol RSS in ga vnese v post, takrat pa ni čšž.
Tak da, bi prosil še kakšno dobr idejo, ker se mi res ne da vsak dan popravljati v texu čšžje.
mHook ::
Zdaj si si sam odgovoril na vprašanje kje je problem.
Sploh ni v tvojem php-ju ali mysql-u.
Problem je v funkciji, ki vleče dol RSS in ga vnese v post.
Sploh ni v tvojem php-ju ali mysql-u.
Problem je v funkciji, ki vleče dol RSS in ga vnese v post.
Zgodovina sprememb…
- spremenil: mHook ()
Blisk ::
To sem tudi sam predvideval, zato sem dal zgoraj en del datoteke, ki vleče dol RSS in ga vstavlja v post.
Če se kdo spozna na programiranje bi prosil, če lahko pogleda ta fajl.
TNX
Če se kdo spozna na programiranje bi prosil, če lahko pogleda ta fajl.
TNX
mHook ::
Prvi odgovor v temi je rešitev. Dodaj to na ustrezno mesto (pazi, da na vrszni red in ponavljanje, ker imaš nekatere črke že notri - npr. š in ž), dodati moraš na enako mesto tudi v drugi tabeli.
Pa še to: če izvor uporablja UTF-8 bi to moralo delati, sicer pa se tole ne bo delal.
Pa še to: če izvor uporablja UTF-8 bi to moralo delati, sicer pa se tole ne bo delal.
Blisk ::
Tukaj je link do MODa, pa bi bil zelo vesel, če pogledaš datoteko, ker jst se res ne spoznam, laho samo ugibam.
TNX
Find RSS
TNX
Find RSS
mHook ::
Če prav razumem: ne dela uvoz prek RSS iz neke spletne strani?
Katere? Kakšen encoding ima ta stran UTF-8 ali win-1250?
Katere? Kakšen encoding ima ta stran UTF-8 ali win-1250?
Blisk ::
ne dela iz nobene strani, ker je text vedno brez čšž.
So pa rss strani od TV SLO, Svarog, pa tudi od SLO-TECHa, vsepovsod je isto, brez čžš!
So pa rss strani od TV SLO, Svarog, pa tudi od SLO-TECHa, vsepovsod je isto, brez čžš!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [php] encoding nizaOddelek: Izdelava spletišč | 3790 (1705) | BivšiUser2 |
» | ubuntu LaTeX sumnikiOddelek: Programska oprema | 4288 (4091) | atasmrk |
» | MySQL in šumnikiOddelek: Programiranje | 3042 (2813) | darkolord |
» | LaTeXOddelek: Programska oprema | 1372 (1207) | CaqKa |
» | MySQL in czsOddelek: Izdelava spletišč | 3601 (2691) | krho |