prevod phprs a phpbb
|
10.2.2006 17:25
Petr Bartel
|
Ahoj,
tak ja jsem se v tom uz uplne ztratil jeden server kde mi bezi debian sarge mysql Ver 12.22 Distrib 4.0.24, for pc-linux-gnu (i386) a Server version: Apache/1.3.33 (Debian GNU/Linux) a tudiz i database phpbb_borek a phprs. Nastaveni virtualhosta
<VirtualHost *>
ServerAdmin webmaster@irix.cz
DocumentRoot /usr/local/www/beh3.tabornici-kladno.com
ServerName beh3.tabornici-kladno.com
ErrorLog /usr/local/www/beh3.tabornici-kladno.com/logs/beh3.tabornici-kladno.com-error.log
CustomLog /usr/local/www/beh3.tabornici-kladno.com/logs/beh3.tabornici-kladno.com-access.log common
AddDefaultCharset ISO-8859-2
<directory /usr/local/www/beh3.tabornici-kladno.com/>
Options Indexes FollowSymLinks
allow from any
</directory>
<directory /usr/local/www/beh3.tabornici-kladno.com/phpBB2>
AddDefaultCharset WINDOWS-1250
Options Indexes FollowSymLinks
allow from any
</directory>
</VirtualHost>
A mym ukolem a pranim je to premigrovat na na jiny server Debian Etch mysql Ver 14.12 Distrib 5.0.16, for pc-linux-gnu (i486) using readline 5.1 a Server version: Apache/2.0.55.
Ovsem ne a ne natrefit na spravnou kombinaci charset a collation, export/import. takze bych rad poprosil o radu
- Jak na puvodni serveru vydolovat data ? dump ?
- pouzit na novem server implicitne utf8 ? souvisi s tim i nastaveni locales ?
- jak nastavit novou mysql , kam do ktere sekce co [mysql-client]...
v soucasnosti jsem to vratil do defaultu
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
collation_connection latin1_swedish_ci
collation_database latin1_swedish_ci
collation_server latin1_swedish_ci
- Bude potreba nastavit neco v phprs nebo phpbb napr. SET NAMES ... popr. prekonvertovat soucasne texty v souborech pomoci iconv, recode , enca na utf8 ?
- Jak nastavit potom apache2 virtual host
Dekuji moc za jakoukoli radu uz jsem z toho dost bezradny, prece jen nejsem schopen to nasosat z AJ dokumentace a prohlasuji ze jsem googlil dlouho, napr. php.vrana.cz ... ale proste jsem nebyl uspesny. Diky moc Petr Bartel |
|
|
Re: prevod phprs a phpbb
|
10.2.2006 17:58
Petr Zajíc
|
Především, potřebujete UTF-8 nebo to chcete nechat v ISO-8859-2? Dále, na import/export tu máme několik dílů seriálu, možností je více, vyberte si (předpokládám, že máte k oběma serverům přístup a máte tam účet, takže možností bude spousta).
V nastavení nové DB Vám nic nebrání udělat to jako postaru, přičemž locale si můžeže nastavit per database nebo per server. |
|
|
Re: prevod phprs a phpbb
|
10.2.2006 18:08
Petr Bartel
|
Protoze jsem pochopil ze je to lepsi mit vsechno v jedne znakove sade, rad bych mel vsude pouze UTF8. Puvodne jsem jsem pomoci phpmyadmin dumpnul ty dve database a zkusil to za jen pomoci phpmyadmina naimportovat. Dalsi pokus byl s mezikrokem prekonvertovat to pomoci recode na utf8 a to potom naimportovat, to uz bylo lepsi. Kazdopadne mi neni jasne temer nic v bodech jak jsem se dotazoval tedy hlavne jak nastavit mysql oproti soucasnemu nastaveni viz. vyse.Dekuji moc Petr |
|
|
Re: prevod phprs a phpbb
|
10.2.2006 19:13
Michal Molhanec
|
No proměnné character_set_client, character_set_results, character_set_connection by mělo odpovídat kódování příslušných PHP skriptů. Ty se nastaví příkazem SET NAMES, eventuelně v konfiguračním souboru parametrem default-character-set.
Jinak v zásadě globální nastavení MySQL právě už není moc důležité, protože kódování/řazení lze nastavit přímo pro jednotlivé databáze/tabulky/sloupce. Hlavně tedy ve výsledku je důležité nastavení kódování sloupce, to musí odpovídat jeho obsahu.
Jinak tady je takový malý MySQL čeština miniFAQ |
|
|
Re: prevod phprs a phpbb
|
10.2.2006 20:16
Petr Bartel
|
diky, jdu cist a zkouset. Petr |
|
|
Re: prevod phprs a phpbb
|
11.2.2006 08:52
Petr Zajíc
|
Jo, rozumím. Takže, jak to v takových případech dělám já:
- Exportuju data z PHPMyAdmina do textu, přičemž se ujistím, že výsledný text je v UTF8
- Zapomenu na to, že mám na cílovém stroji PphMyAdmin
- Pustím řádkového klienta a importuju do nové databáze. Přitom dávám pozor na to, abych zavolal SET NAMES a potom spustím zpracování mého milého texťáku pomocí příkazu SOURCE řádkového klienta. Pozn.: Source znamená, že následující příkazy budou pocházet ze souboru, ne z výchozího vstupu.
|
|
|
Re: prevod phprs a phpbb
|
12.2.2006 18:35
Petr Bartel
|
Dekuji vam obema za rady,
uspesne vyreseno, takto :
mysql nastaveno na utf8 a klient na latin2, protoze mam locales na tom serveru na iso-8859-2
[client]
...
default-character-set = latin2
[mysqld]
...
default-character-set = utf8
default-collation = utf8_czech_ci
- phpadminem (jako backendem k mysqldump) exportovat ty db ,(byli v latin2)
- recode l2..utf8 < file_in > file_out
- mysql
- set names utf8;
- source /path/to/file
- v phpbb, phprs a ostatnich aplikacich jsem nastavil napevno set names jak bylo potreba.
a ejhle vse funguje jak ma a jen a jen kvuli tomutu serialu a vasim radam a take mysql manualu :)
takze diky moc
P.S. jestli jsem udelal nejakou zjevnou chybu se by se mi mohla pozdeji vymstit, prosim upozornete mne.
S pozdravem
Petr Bartel
|
|
|
Re: prevod phprs a phpbb
|
12.2.2006 20:20
Petr Zajíc
|
Díky ;-)) To je v podstatě to, co jsem říkal, až na to, že místo abyste se ujistil, že db jsou v UTF8 jste věděl, že jsou v latin2 a použil recode. Což je v pořádku. Trochu je mi líto, že jsem utility pro konverzi nezmínil v článku; teď vím, že by to bylo možná potřeba... |
|
|
Re: prevod phprs a phpbb
|
13.2.2006 09:55
o.k.
|
Na konverzi doporucuji spise program iconv (protoze je primou soucasti GNU C knihovny) nez program recode.
Iconv bude obsazen uplne ve vsech distribucich narozdil od programu recode. |
|
|
Ako sa sprava PHP?
|
20.6.2006 13:51
Srigi
|
dakujem autorovi za spracovanie tejto temy, ale stale mam otazky.
Ako sa z pohladu klienta sprava PHP? Majme tento kod:
mysql_query("INSERT INTO cestina (uft) values ('ľščťžýáíé')");
V akom kodovani posle PHP string v uvodzovkach do SQL servera. Alebo podrobnejsie, mohli by ste mi prosim napisat ake je kde kodovanie po tejto ceste z hore uvedeneho prikladu:
(file format utf8)pokus.php->webserver->sqlserver->database |
|
|
Re: Ako sa sprava PHP?
|
25.6.2006 07:24
Petr Zajíc
|
Z pohledu klienta se PHP chová tak, jak bylo uvedeno v článku:
Tady není moc co dodat. Je třeba si uvědomit, že z hlediska databáze je PHP klient jako každý jiný, a že je tudíž namístě specifikovat v našich ctěných skriptech rovněž odpovídající příkaz SET NAMES, nějak takhle:
Takže, data budou poslána v kódování nastaveném pomocí SET NAMES. Pokud SET NAMES nastaveno nebylo, pak pomocí výchozího kódování. |
|
|
import z csv pomoci php
|
19.1.2007 16:45
Martin Havel
|
Zdravim, pro provoz mysql a php na lokalu pouzivam xampp, cili mysql 5.0.27 pro verzi xamppu, kterou mam.
Problem je, kdyz importuju data z csv souboru kodovanym v cp1250 (kodovani utf8 by neslo s funkci fgetcsv dohromady). Ve skriptu mam nastaveno iconv_/input/internal/output/_encoding taky cp1250, header taktez, pri lazeni skriptu mam i debugger nastavenej na cp1250, mysql ma nastaveno taky vsude cp1250 i na databazi (az na server, ale to by vadit nemelo, nefunguje to i s nastavenym server-default-characterset=cp1250) kterej je latin1.
Do tabulky mi napadaj data bud spatne kodovany, nebo z ni spatne kodovany lezou, protoze nefunguje cestina a misto ni se zobrazuji "paznaky".. Nevite, co mam jeste vyzkouset? |
|
|
Re: import z csv pomoci php
|
20.1.2007 11:50
Petr Zajíc
|
Vím. SET NAMES. Php je klient, a jako takový hovoří k serveru v nějaké znakové sadě. Pomocí SET NAMES před započetím importu byste nastavil, že přicházející data jsou v nějaké znakové sadě. Jinak si bude databáze myslet, že data jsou ve výchozí znakové sadě, což nejsou. |
|
|
Re: import z csv pomoci php
|
22.1.2007 12:48
Martin Havel
|
Prikaz set names i set charset jsem provedl, ale vysledek zadny. Cele to vypada, ze jsou vsude nastaveny spravne znakove sady, ale nechova se to tak.. Pokud chcete, poslu vam muj php skript i csv soubor, nenapada-li vas, co by mohlo byt dale spatne. |
|
|
Re: import z csv pomoci php
|
22.1.2007 13:00
Petr Zajíc
|
klidně pošlete ... mail na mě je v profilu, pošlu Vám zpátky adresu. Nebo ta data někde vystavte, pokud nejsou tajná, a pošlete mi link. |
|
|
Re: import z csv pomoci php
|
22.1.2007 14:32
Martin Havel
|
http://download.yousendit.com/6CC52E7E3A1364AB takze link pro download kodu a csv souboru. Tajne neni nic, ani to, ze ten kodu jiste muze byt i lepsi:) Nicmene funguje, coz mi staci. |
|
|
Re: import z csv pomoci php
|
22.1.2007 17:14
Petr Zajíc
|
Pokud neumíte ani opsat text z článku, pak je to těžké. Vy máte v kódu
$names = "set names cp1250";
zatímco v článku je
mysql_query("SET NAMES 'cp1250';"); //nebo 'latin2' nebo 'utf8'
a ještě pro jistotu je to tam tučně. |
|
|
Re: import z csv pomoci php
|
23.1.2007 09:00
Martin Havel
|
jisteze, jenomze o dva radky dal predavam promennou $names jako parametr: "mysql_query($names,$link);"
Je to sice zbytecne rozvlekle, ale na funkcnosti to nic nemeni. |
|
|
Re: import z csv pomoci php
|
23.1.2007 11:21
Petr Zajíc
|
Aha, tak jsště polopatičtěji. CHYBĚJÍ VÁM TAM APOSTROFY. Už je to jasné?
set names cp1250
není totéž jako
set names 'cp1250'
|
|
|
Re: import z csv pomoci php
|
24.1.2007 10:15
Martin Havel
|
Zvláštní.. pro zkoušku jsem napsal toto:
<?php
header("Content-Type: text/html; charset=cp1250");
iconv_set_encoding("input_encoding","cp1250");
iconv_set_encoding("output_encoding","cp1250");
iconv_set_encoding("internal_encoding","cp1250");
mysql_connect("localhost","root");
mysql_query("set names 'cp1250';");
mysql_query("set charset 'cp1250';");
mysql_query("create database if not exists pokus default charset 'cp1250';");
mysql_query("use pokus");
mysql_query("create table if not exists tabulka (sloupec1 varchar(40) not null primary key)");
mysql_query("insert into tabulka (sloupec1) values (\"čočka\")");
mysql_close();
?>
Myslím, že je to správně - všechny dotazy se provedou - přesto však "čočka" vypada jako "?o?ka".
Abych předešel prípadným syntatickým nedorozuměním, zkoušel jsem dokonce dát do apostrofů iconv a header názvy charsetů:) |
|
|
Re: import z csv pomoci php
|
24.1.2007 10:39
Martin Havel
|
... problém je někde mezi klientem a skriptem, jelikož zadavaní čeětiny ručně v mysql konzoli funguje.. Jestli Vám je jasné proč, tak mě ne a hlavě - nemám se koho zeptat;-) |
|
|
Re: import z csv pomoci php
|
24.1.2007 13:08
Petr Zajíc
|
Kód
<?php
mysql_connect("localhost","root");
mysql_query("set names 'cp1250';");
mysql_query("create database if not exists pokus default charset 'cp1250';");
mysql_query("use pokus");
mysql_query("create table if not exists tabulka (sloupec1 varchar(40) not null primary key)");
mysql_query("insert into tabulka (sloupec1) values (\"čočka\")");
mysql_close();
?>
Vykopírujte a uložte jako php soubor. Ujistěte se, že je uložen v kódování cp1250 a ne UTF-8 a spusťte jej. testováno, funguje. |
|
|
Re: import z csv pomoci php
|
24.1.2007 16:04
Martin Havel
|
Výborně, tak to funguje alespoň Vám. Asi bude u mě chyba někde v editoru, nebo už nevím.. Budu zkoušet. Každopádně děkuji. |
|
|
Re: import z csv pomoci php
|
24.1.2007 17:48
Petr Zajíc
|
jde o to, co používáte za editor. Jste si jist, že ukládá v cp1250?
|
|
|
Re: import z csv pomoci php
|
24.1.2007 18:22
Martin Havel
|
používám PHPEDit 2.8.0.3997 pro php, který snad umí ukládat do cp1250 - kontrolováno pspadem. Mysql 5.0.27, php 5.2.0 - xampp 1.5.5 - winXP.. V podstate je mi jedno, jakou znakovou sadu používat, ale ve skriptu používam funkci fgetcsv, která by asi utf8 soubor nezvládla. |
|
|
Re: import z csv pomoci php
|
25.1.2007 07:24
Petr Zajíc
|
Pak to zkrátka musí fungovat. |
|
|
|
|
KOMENTARZE
|
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
|
|
Szukanie oprogramowania
|