| Autor | Zpráva | ||
|---|---|---|---|
| deader Profil |
#1 · Zasláno: 4. 6. 2010, 20:59:55
Zdravím,
potřebuji získat název a popis fotky z exif informací IFD0.ImageDescription a IFD0.Comments, avšak narazil jsem na problém s kódováním. ImageDescription: název LabuĹĄ ěščřžýáà Ă?óúůse mi povedlo pomocí iconv("utf-8", "windows-1250",$exif["IFD0"]["ImageDescription"])název Labuť ěščřžýáíéóúůďťň avšak komentář komentáYe `X}ÝÁÍÉÓÚndG Labue a Y~ýáíéóúoeH nikoliv, má vypadat takhle: komentáře ĚŠČŘŽÝÁÍÉÓÚŮŤĎŇ Labuť ěščřžýáíéóúůďťň Zkoušel jsem fci iconv a nejde utf-8 ani ISO-8859-2. Informace jsou zadávány ve Vlastnostech souboru ve Windows nebo ve Photoshopu. Moc děkuji za pomoc. |
||
|
Časová prodleva: 5 dní
|
|||
| Kronny Profil |
#2 · Zasláno: 9. 6. 2010, 20:41:13
A zkoušel jsi už jiné kódování ?
|
||
| Davex Profil |
#3 · Zasláno: 9. 6. 2010, 21:53:42
deader:
Můžeš dát k dispozici nějaký obrázek s problematickými EXIF informacemi? |
||
| deader Profil |
#4 · Zasláno: 10. 6. 2010, 07:18:19
Jsem někde četl, že jen tyto 3 podporují češtinu, nebo je to jinak? Obrázek: http://zsrep.pisarovic.cz/upload/4.JPG nebo http://zsrep.pisarovic.cz/upload/2.JPG;
výpis všech exif toho obrázku: http://zsrep.pisarovic.cz/admin/exif.php?n=1 |
||
| Davex Profil |
#5 · Zasláno: 10. 6. 2010, 18:52:04
deader:
Ona ta funkce exif_read_data() funguje pro češtinu divně, protože se sama snaží kódování převádět podle nastavení exif.encode_unicode, které je ve výchozím stavu nastaveno na pro češtinu nevhodné kódování ISO-8859-15. Zároveň tam pravděpodobně dochází k dvojitému převodu nebo nerozeznání kódování UCS-2LE. Mělo by pomoci přenastavení exif.encode_unicode na UTF-8 a normalizace na kódování UTF-8. /* pro EXIF používat kódování UTF-8 */
ini_set('exif.encode_unicode', 'UTF-8');
/* konverze neznámého řetězce z EXIFu na UTF-8 */
function exif2utf($s)
{
/* převod UCS-2LE -> UTF-8 */
$utf = mb_convert_encoding($s, 'UTF-8', 'UCS-2LE');
/* bylo to UCS-2LE? */
if (mb_strlen($utf) < mb_strlen($s)) {
$s = $utf;
}
/* odstranění znaku \0 na konci */
if (mb_substr($s, -1)=="\0") {
$s = mb_substr($s, 0, -1);
}
return $s;
}
/* použití */
$out = iconv("utf-8", "windows-1250", exif2utf($exif["IFD0"]["ImageDescription"]));Pro rozeznání multibyte kódování by měla sloužit funkce mb_detect_encoding(), ale kódování UCS-2LE mi označila jako UTF-8. Možná to jde lépe, ale nenapadá mě jiné řešení. |
||
| deader Profil |
#6 · Zasláno: 10. 6. 2010, 21:06:15
Super, fakt moc díky
, již jsem zoufal, že se nikdo neozve a nebudu moci včas dokončit zakázku. Krásně to funguje i na title a subject.
|
||
|
Časová prodleva: 15 let
|
|||
0
, již jsem zoufal, že se nikdo neozve a nebudu moci včas dokončit zakázku. Krásně to funguje i na title a subject.