Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Kodeering märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
helpless
HV kasutaja
helpless

liitunud: 28.08.2009




sõnum 29.03.2013 02:34:10 Kodeering vasta tsitaadiga

Mure siis täpitähtedega. Koodi kodeering on utf-8 - index.php on ka kõik utf-8.
Kui ma sisestan kasti sõnumi, siis see ei kuva täpitähti. Kuvab mingit hiina jama.
Andmebaasis ei kuva ka täpitähti. Ei tea milles jama võib olla?
Kui kirjutan näiteks teate edastamine asemel jänes - siis seal kuvab kõik korralikult.
Spoiler Spoiler Spoiler
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum
Genobe222
HV vaatleja

liitunud: 18.05.2009




sõnum 29.03.2013 12:08:52 vasta tsitaadiga

Charseti võid panna "ISO 8859-4", siis peaks kenasti kuvama: <meta http-equiv="Content-Type" content="text/html; charset=ISO 8859-4">.

Mulle on sisse harjunud ü, ö, ä, õ asemel &uuml;, &ooml;, &auml; ja &otilde; kirjutamine. str_replace-ga saad selle automaatselt ära teha.
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 29.03.2013 12:25:16 vasta tsitaadiga

Genobe222, http://www.php.net/manual/en/function.htmlentities.php


Aga üldiselt, brauserile kasutatava kodeeringu ütlemine on kohustuslik.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
Alan
HV veteran
Alan

liitunud: 12.02.2008



Autoriseeritud ID-kaardiga

sõnum 29.03.2013 12:34:35 vasta tsitaadiga

Kui kõik (faili encoding, meta charset) on UTF8 ja andmebaasist ei tule täpitähed, siis pead üle vaatama andmebaasi, tabeli ja tabeli väljade charsetid ning need samuti UTF8-ks muutma: utf8_general_ci või võid ka kasutada utf8_estonian_ci. Näiteks phpMyAdminist on üsna lihtne seda teha. By default on päris paljudel latin1_swedish_ci.
Veebis ISO-8859-xx charsettide ja täpitähtede asemel entitide kasutamine jäägu traditsioonidelt aastasse 98.

Juhend phpMyAdminis tegemiseks:
1. Valid andmebaasi -> "Operations" -> Collation -> utf8 -> Go
2. Structure -> Valid tabeli -> Operations -> Collation -> utf8 -> Go
3. Structure -> Muudad välju -> Collation -> utf8 -> Go
Kommentaarid: 131 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 121
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 29.03.2013 12:36:43 vasta tsitaadiga

Alan, "PHP only supports a 256-character set, and hence does not offer native Unicode support".
http://php.net/manual/en/language.types.string.php
Üks hoiatus näiteks lehelt: "Internally, PHP strings are byte arrays. As a result, accessing or modifying a string using array brackets is not multi-byte safe, and should only be done with strings that are in a single-byte encoding such as ISO-8859-1."
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
helpless
HV kasutaja
helpless

liitunud: 28.08.2009




sõnum 29.03.2013 12:51:43 vasta tsitaadiga

<meta http-equiv="Content-Type" content="text/html; charset=ISO 8859-4 ja utf-8">. Ei aidanud.
Tabeleid muutsin ka aga ikka sama lugu.
Kas keegi str_replace-e asja mul koodi ei taha ära kirjutada, palun?
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum
Alan
HV veteran
Alan

liitunud: 12.02.2008



Autoriseeritud ID-kaardiga

sõnum 29.03.2013 12:59:41 vasta tsitaadiga

mikk36 kirjutas:
Alan, "PHP only supports a 256-character set, and hence does not offer native Unicode support".
http://php.net/manual/en/language.types.string.php
Üks hoiatus näiteks lehelt: "Internally, PHP strings are byte arrays. As a result, accessing or modifying a string using array brackets is not multi-byte safe, and should only be done with strings that are in a single-byte encoding such as ISO-8859-1."


... accessing or modifying a string using array brackets ...
Kui kasutada multibyte tähti kuskil, siis tuleb kasutada ka vastavalt multibyte funktsioone (mb_...), aga see on juba suhteliselt teemaväline.

tsitaat:
Obviously enough, all files you'll be serving (PHP, HTML, JavaScript, etc.) should be encoded in valid UTF-8.
You need to make sure that every time you process a UTF-8 string, you do so safely. This is, unfortunately, the hard part. You'll probably want to make extensive use of PHP's mbstring extension.
PHP's built-in string operations are not by default UTF-8 safe. There are some things you can safely do with normal PHP string operations (like concatenation), but for most things you should use the equivalent mbstring function.
To know what you're doing (read: not mess it up), you really need to know UTF-8 and how it works on the lowest possible level. Check out any of the links from utf8.com for some good resources to learn everything you need to know.


Aasta 98 traditsiooni all mõtlesin seda:

Ja seda: http://w3techs.com/technologies/overview/character_encoding/all

Lugeda tuleks ka seda: The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)


viimati muutis Alan 29.03.2013 13:12:47, muudetud 5 korda
Kommentaarid: 131 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 121
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 29.03.2013 13:00:59 vasta tsitaadiga

Proovi charset http headeris öelda.. Selleks pane koodi esimeseks reaks midagi sellist:
header('Content-Type: text/html; charset=UTF-8');
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 60
tagasi üles
vaata kasutaja infot saada privaatsõnum
helpless
HV kasutaja
helpless

liitunud: 28.08.2009




sõnum 29.03.2013 13:12:10 vasta tsitaadiga

Mitte ei saa icon_sad.gif
Äkki panen midagi valesti?
Lihtsalt header('Content-Type: text/html; charset=UTF-8'); - seda ka panna ei saa ju.
Tal pole nii mingit käsklust ju?
Lisa ise ära ja lisa väike kood mulle siia näitamiseks? icon_wink.gif

Ei saa ju asi nii keeruline ometi olla. Või mis?


viimati muutis helpless 29.03.2013 13:31:18, muudetud 1 kord
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 29.03.2013 13:19:00 vasta tsitaadiga

Alan, just, võimalik on, aga selle jaoks tuleb väga hoolikalt jälgida, et midagi ära ei lõhuks.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 29.03.2013 13:33:46 vasta tsitaadiga

Mis siin siis aru saada:
php:
  1. <?php
  2.  header('Content-Type: text/html; charset=UTF-8');
  3. //siia kogu ülejäänud kood
  4. ?>
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 60
tagasi üles
vaata kasutaja infot saada privaatsõnum
helpless
HV kasutaja
helpless

liitunud: 28.08.2009




sõnum 29.03.2013 15:44:04 vasta tsitaadiga

Sellest ei ole kasu. icon_sad.gif
_________________
Need to hear louder!
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 29.03.2013 16:17:46 vasta tsitaadiga

Kui oled kõik varem soovitatu järgi proovinud ja ikka ei toimi, siis paistab, et kasutad mingit frameworki, mis selle ära käkib. Kui sul on mingi testkeskkond, mille saab avalikuks teha, siis võibolla oskab keegi mõne vihje anda. Kui sisestad phpMyAdmin või muu baasi haldusliidese abil midagi otse andmebaasi, kas siis kuvab korrektselt? Lehte ja kogu koodi nägemata on selle foorumi kaudu lahendamine hetkel nõela heinakuhjast otsimine.
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 60
tagasi üles
vaata kasutaja infot saada privaatsõnum
helpless
HV kasutaja
helpless

liitunud: 28.08.2009




sõnum 29.03.2013 16:36:34 vasta tsitaadiga

Kogu jama tundub olevat andmebaasiga vist.
Kõik mu toimib hästi. Siis kui info andmebaasi läheb on täpitähed kadunud.
Kui ma kustutan andmebaasis selle sisestatud teksti ära ja asemele kirjutan ise sinna näiteks jänes, siis kuvab korralikult. icon_smile.gif

Äkki saab kuidagi selle str_replace-ga?
Ma ise ei oska seda sinna kirjutada juurde. icon_sad.gif
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 29.03.2013 16:43:15 vasta tsitaadiga

Mina teen andmebaasi sellise kodeeringuga tabelid ja sealt pole kunagi mingit jama olnud. Ainuke, mis phpmyAdmin is vaadatuna on kül baasis veidraid märke, kuid ma pole sellele tähelepanu pööranud, kuna lehtedel selliselt kõik toimib.


$paring="CREATE TABLE IF NOT EXISTS albumA1 (
id int(11) NOT NULL auto_increment,
albumN text  NOT NULL,
inv int(1) NOT NULL,
PRIMARY KEY (id)
)DEFAULT CHARSET=utf8;";


Kas sul failid on UTF-8 kodeeringus salvestatud? See üks põhi viga mille tõttu ei saa täpitähti lehele.

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 29.03.2013 16:54:42 vasta tsitaadiga

Kui tahad kangesti ise märke vahetada, vaata funktsioone utf8_encode ja utf8_decode. Saab ka str_replace abil, aga vaevalt keegi viitsib sulle str_replace abil valmis lahendust tegema hakata... selleks toksi googlesse utf-8 ja uuri hex editoriga mis märgid sinna praegu lähevad ja saadki teada, mida mille vastu vahetama pead.

Samas olgu öeldud, et see tegevus on siiski päraku kaudu hammaste parandamine ja õigem oleks üles otsida, mis jama on andmete baasi salvestamise ja/või sealt lugemisega.
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 60
tagasi üles
vaata kasutaja infot saada privaatsõnum
helpless
HV kasutaja
helpless

liitunud: 28.08.2009




sõnum 29.03.2013 17:03:38 vasta tsitaadiga

Ok ....

Muidu tabel on selline: Ma olen seda igatmoodi muutnud icon_smile.gif
Spoiler Spoiler Spoiler
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 29.03.2013 17:07:27 vasta tsitaadiga

Siis sul viga ongi ju tabeli kodeeringus vaata mu eelmist posti sul ju latin1 kodeering

DEFAULT CHARSET=latin1

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
helpless
HV kasutaja
helpless

liitunud: 28.08.2009




sõnum 29.03.2013 17:19:19 vasta tsitaadiga

Ma muutsin seda vist nii: )
ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=762 ;

Aga sellest vist polnud kasu.
Või kuidas ma seda muutma peaks?

Proovin kohe seda:
ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=762 ;
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 29.03.2013 17:21:21 vasta tsitaadiga

Las targemad ütlevad, kuidas muuta, kui ainult nii muudad tuleb tabel maha kustutada, kuna olemas oleva tabeli korral selliselt midagi ringi ei tehta. Kuidagi phpmyAdminist ehk.
_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 29.03.2013 18:44:07 vasta tsitaadiga

sql:
  1.  
  2. ALTER TABLE `tabel`  COLLATE='utf8_estonian_ci',  ENGINE=MyISAM;
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 60
tagasi üles
vaata kasutaja infot saada privaatsõnum
Redikate
HV veteran
Redikate

liitunud: 30.12.2005




sõnum 29.03.2013 23:18:51 vasta tsitaadiga

Veits OT, aga ma ei saanud naeru pidama @:
Genobe222 kirjutas:
Mulle on sisse harjunud ü, ö, ä, õ asemel &uuml;, &ooml;, &auml; ja &otilde; kirjutamine.


Parim lahendus siin teemas.
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 33
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Kodeering
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.