MySQL+utf8=nincs ékezet
Sziasztok!
MySQL 5.0-t használok, win alatt.
A problémám az, hogy ha a karaktarkészletet utf8-ra állítom, akkor nem tudok ékezetes betűket írni az adatbázisba.
Így állítottam be a karakterkészletet:
mysqld --default-character-set=utf8 --default-collation=utf8_general_ci
Ekkor ha pl. ez az SQL parancs:
insert into tanulo (vezeteknev) values ("Ádám");
ez a hibaüzenet:
ERROR 1406 (22001): Data too long for column 'vezeteknev' at row 1
Biztosan a karakterkészlettel van a gond, mert latin2_hungarian_ci-vel működik (és ékezet nélküli szövegnél nincs hiba).
Mi lehet a hiba?
■ MySQL 5.0-t használok, win alatt.
A problémám az, hogy ha a karaktarkészletet utf8-ra állítom, akkor nem tudok ékezetes betűket írni az adatbázisba.
Így állítottam be a karakterkészletet:
mysqld --default-character-set=utf8 --default-collation=utf8_general_ci
Ekkor ha pl. ez az SQL parancs:
insert into tanulo (vezeteknev) values ("Ádám");
ez a hibaüzenet:
ERROR 1406 (22001): Data too long for column 'vezeteknev' at row 1
Biztosan a karakterkészlettel van a gond, mert latin2_hungarian_ci-vel működik (és ékezet nélküli szövegnél nincs hiba).
Mi lehet a hiba?
ettől még nem az a készlete
<Nincs cím>
varchar(40)-ben miért nem fér az el, hogy "Ádám"?
Texttel is baja van
Üdv.: fberci
jó jó, de...
Amit még jobb lenne tudni, hogy amellett, hogy a szerver paramétereit beállítottad, a kliensed pontosan milyen. Milyen programmal próbálkozol (PHP, PHPMyAdmin, parancssor), milyen oprendszer alatt?
A MySQL-hez kapcsolódás után közvetlenül, ha UTF-8-at szeretnél használni, futtasd le a
SET NAMES UTF8
SQL parancsot. És persze amit küldesz ékezetes karakter, az is UTF-8-ban legyen kódolva, azaz a konzolod, PHP-d, böngésződ, stb. UTF-8-at küldjön a MySQL fele. Ekkor menni fog...-boogie-
<Nincs cím>
Minden SQL utasítás elé be kellett raknom az alábbi sorokat...
Ha valaki tisztában van ezekkel az adatbázis/tábla karakterbeállításokkal, dobhatna egy magyarnyelvű leírást, mert szerintem többen (köztük én is) nincsenek ezzel tisztában.
Ugyan az
Mit lehetne tenni?
Mit jelent ez?
-boogie-
Igen
A phpMyAdmin egy hibaüzenettel jön fel, valami PHP ext könyvtárban lévő .dll fájl nem tartalmaz v.milyen karakterkészletet és ezért mittudomén mit csinál. Bocs, késő délután pontosan le tudom írni a hibaüzenetét. Arra is gondoltam, hogy esetleg a php.ini-ben kellene kutakodnom? Megpróbáltam, de eredménytelenül.
Kösz a segítséget!
most nalam is
A vegen ha a lekerdezesem elott azt mondom, hogy SET NAMES LATIN2; akkor jo, egyebkent meg az "ő" és az "ú" betuim kerdojelle valnak.
Nem igazan akarok mysql specifikus parancsokat alkalmazni, nincs erre valami ertelmesebb megoldas?
valami gebasz van ott
Az biztos, hogy ha arra figyelsz, hogy a DB/tábla/mező utf8 legyen, PHP-ban kiadod a Content-Type header részeként a megfelelő charsetet, és csatlakozáskor mondasz egy SET NAMES utf8-at (ez utóbbi akkor kelhet, hogy ha a DB szerver defaultja nem utf8, de jó lehet annak kivédésre is, hogy az amúgy utf8-as DB-d átkerül egy ilyen szerverre): akkor nincs gond a karakterkódolással.
Arról hallottam már, hogy az IE hajlamos nem a charsetnek megfelelően visszapostolni az adatokat (mondjuk ez nem utf8 esetén olvastam), ha nem volt képes abban a charsetben ábrázolni a beírtakat (ahelyett, hogy HTML entitássá alakítaná): ez ellen lehet úgy véekezni, hogy beleteszel a formba egy rejtett _charset_ nevű változót, és FF valamint IE ilyenkor ebbe beállítja, hogy ténylegesen milyen kódolást is használt. Opera alatt pedig az accept-encoding (vagy valami hasonló nevű, még nem használtam) form attribútum használható ilyenkor, mert ha ezt kitöltöd, akkor az Opera (egyedüli böngészőként) ilyenkor megmondja, hogy a listából mit is választott.
Felhő
Szerintem...
Itt az a gond, hogy az a text file, amibe ezt a sort írtad, ANSI kódolású.
A: Vagy mentsd el a fájlt Notepad.exe-vel UTF8-ban (Save as... Encoding:)
B: Vagy így írd be az Ádám szót:
insert into tanulo (vezeteknev) value CONVERT("Ádám" using UTF8);
(de lehet, hogy csak a B fog menni)
Üdv
Zoli
server: 5.0.22 client: 5.0.11, Win XP
Aztán persze nem, mert állandóan ezt dobta vissza.
Alap kódolást átállítottam utf8-ra, tábla és mezők kódolása szintén utf8, ezután txt file mentés másként (utf8-ként), row format=fixed, pack keys=pack none (?), és még mindig kiírta, pedig első mező irsz volt, ami varchar(4) volt. Ezt átállítottam (150)-re, így megette...
Ezután MySQL Query Browserben select * from irsz és ott vannak az irányítószámok, és a városok.
megoldás!
üdv. krey
ps. imádok egyéves témákhoz hozzászólni :)
Oszlop típus
Hasonló volt a problémám, mint neked.
Röviden leírom: normál módon - a karakterkészlet beállítása nélkül - létrehoztam egy adatbázist. Mikor hosszú ékezetes betűket akartam a rekordokban felvinni az Incorrect string value:... kezdetű üzenetet kaptam.
Ahhoz, hogy jó legyen, minden érintett oszlopon módosítani kell a karakterkészletet a következő módon:
ALTER TABLE tablanev MODIFY oszlopnev VARCHAR(255) CHARACTER SET utf8;
Ha így nem működik, akkor két lépésben csináld:
ALTER TABLE tablanev MODIFY oszlopnev BINARY(255);
ALTER TABLE tablanev MODIFY oszlopnev VARCHAR(255) CHARACTER SET utf8;
Nekem bevált! (MySQL verzióm: 5.0.37)
Forrás, ahol a megoldást találtam: http://dev.mysql.com/tech-resources/articles/4.1/unicode.html
MSQL adatbázis
Volt egy verses oldalam az Extrán, de lassúnak találtam hát átmentem a fizetős Dataglobe-ra.Azóta az ő és ű betűk helyett kérdőjel jön.11 napja nem hajlandó senki foglalkozni velem a szolgáltatótól, még vissza se írnak.Már azt se bánnám, ha a régi adatok úgy maradnak(majd lenyelik valahogy)csak a frissen beküldöttek lennének jók.
Na, most jön a lényeg: 60 éves vagyok, fogalmam nincs ill. nem volt az adatbázishoz, angolul nem tudok, eddig minden ment flottul, most megpróbáltam visszavinni az adatbázist az extrára, ott meg aztán minden ékezetes betűre kérdőjel lett, pedig előtte jó volt.Ha új írást írok az viszont jól jelenik meg, de a régi adat így már nagyon csúnya.
Most rajtam csak úgy lehetne segíteni, ha megadnám a PHP és MSQL nevet és jelszót, amit meg is tennék, ha hajlandó lenne valaki segíteni nekem.Le vagyok százalékolva és ez az egyetlen szórakozásom, csak már nagyon panaszkodnak a tagok.
Azért ide írom, amit tudok:
Dataglobe-PHPmyAdmin:2.6.2
MSQL:4.1.22
Karakter:UTF8 Unicode
Egybevetés:utf8_general_ci
Tábla végén az összegzés:utf8_general_ci
Böngésző:iso-8859-2 (utf-8-al sem jó)
Próbáltam már az utf8_unicode_ci;latin2;latin1_swedish_ci;stb.
Beírtam ezeket:
$result = mysql_query("SET NAMES latin2;SET CHARACTER latin2");
Ezt válaszolta:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$result = mysql_query("SET NAMES latin2;SET CHARACTER latin2"' at line 1
PHP-Fusiont használok Windows alatt
Természetesen az Extra-sok sem válaszolnak a levelemre.
Marad az, hogy valaki innen segít.
segítség
Üdv,
Felhő
segítség
Tibor
Segítség
Sajnos betegség miatt valóban csúszunk a felhasználói segítségnyújtást célzó levelekkel, de azért szeretném azt gondolni, hogy nem "természetes", hogy nem válaszolunk segítségkérő üzenetekre. Azonnal utánanézünk az említett levélnek és természetesen megpróbálunk mindent megtenni a probléma megoldásának érdekében.
Ormándi Zoltán
/Extra.hu/
Segítség
Értem a célzást és egyben megértem.Néha jó lenne tudni hány technikus dolgozik Önöknél és naponta mennyi e-mailt kapnak és szerintem akkor a segítségkérők is türelmesebbek lennének.Persze valószínűleg ezek nem nyilvános adatok.
Ugyanakkor köszönöm előre is a segítségét.
Üdvözlettel:Szilágyi Tibor
Segítség
Megtaláltuk levelét, így - konkrét e-mail cím ismeretében - azt hiszem jobb, ha nem a weblabort terheljük tovább ezzel a beszélgetéssel. Válaszunkat hamarosan meg fogja kapni.
Üdvözlettel,
Ormándi Zoltán
/Extra.hu/
Segítség
Köszönettel:Szilágyi Tibor
http://napkorong.hu