Umlaute in Schlagwörtern Umlaute in Schlagwörtern
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

Umlaute in Schlagwörtern

Started by wuestenfloh, January 15, 2014, 10:19:48 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

wuestenfloh

Nach dem Update auf Version 1.5.26 werden die deutschen Umlaute (ä,ö,ü) in der Schlagwortliste nicht mehr richtig dargestellt.
Link!

Die Funktion der Schlagwörter ist nicht beeinträchtigt.


Αndré

Ich konnte das Problem bisher leider nicht nachstellen. Kannst du mir einen Dump der "pictures"-Tabelle deiner MySQL-Datenbank zur Verfügung stellen, damit ich mir das genauer ansehen kann?

Hast du die Schlagworte seit dem Update bearbeitet, oder stammen sie noch von einer früheren Version? Wurden sie manuell eingepflegt oder automatisch über IPTC-Daten hinzugefügt?

wuestenfloh

QuoteIch konnte das Problem bisher leider nicht nachstellen. Kannst du mir einen Dump der "pictures"-Tabelle deiner MySQL-Datenbank zur Verfügung stellen, damit ich mir das genauer ansehen kann?
Link!

QuoteHast du die Schlagworte seit dem Update bearbeitet, oder stammen sie noch von einer früheren Version? Wurden sie manuell eingepflegt oder automatisch über IPTC-Daten hinzugefügt?
Die Schlagwörter habe ich manuell eingepflegt. Testweise habe ich das Schlagwort "Jürgen" hinzugefügt (kann man sehen, wenn man auf "Suchen" klickt). Auch dann wird das "ü" nicht richtig dargestellt.

wuestenfloh

Quote from: wuestenfloh on January 17, 2014, 10:36:09 AM
Link!
Die Schlagwörter habe ich manuell eingepflegt. Testweise habe ich das Schlagwort "Jürgen" hinzugefügt (kann man sehen, wenn man auf "Suchen" klickt). Auch dann wird das "ü" nicht richtig dargestellt.

In eurer eigenen "Demo" kann man das für das Schlagwort "für" übrigens auch besichtigen  :)

Αndré


Αndré

Dein Dump hat mich leider nicht weiter gebracht. Wenn ich ihn als UTF-8 importiere, funktioniert alles wie gewünscht. Importiere ich Ihn als latin1, findet Coppermine auch keine Treffer mehr für die betroffenen Schlagworte.

Diese Problematik wurde schon kurz vor unserem Seitenausfall behandelt, leider hat Google's Cache den weiteren Verlauf nicht mehr erfasst. Wenn ich mich recht entsinne, sollte es wohl durch einen Austausch von htmlentities mit htmlspecialchars und entsprechenden Parametern funktionieren. Ich teste das mal direkt an der Demo.

Αndré

Quote from: Αndré on January 17, 2014, 12:31:24 PM
Wenn ich mich recht entsinne, sollte es wohl durch einen Austausch von htmlentities mit htmlspecialchars und entsprechenden Parametern funktionieren.

Funktioniert bei der Demo. Siehe auch http://forum.coppermine-gallery.net/index.php/topic,76830.msg372140.html#msg372140

Cmaniac

Sorry to reply in English, I don't know if any rules are violated. A google translate translation will follow.

The exact problem was that http://php.net/htmlentities and http://php.net/htmlspecialchars

before php 5.4.x have as default encoding ISO-8859-1 (latin1) instead of UTF-8, as documented:

Quoteencoding
Defines encoding used in conversion. If omitted, the default value for this argument is ISO-8859-1 in versions of PHP prior to 5.4.0, and UTF-8 from PHP 5.4.0 onwards.

automatic translation follows:

Das genaue Problem war, dass http://php.net/htmlentities und http://php.net/htmlspecialchars

vor PHP 5.4.x haben als Standardcodierung ISO-8859-1 (latin1) anstelle von UTF-8, wie dokumentiert:

QuoteCodierung
Definiert Codierung in Umwandlung verwendet. Wenn nicht angegeben, wird der Standardwert für dieses Argument ist ISO-8859-1 in PHP-Versionen vor 5.4.0 und UTF-8 PHP 5.4.0 ab.

wuestenfloh

Danke André, es hat geholfen...  :)

Wenn ich CManiac richtig verstehe, hätte ich das Problem ab PHP 5.4.x nicht.
Mein Hoster hat z.Zt. PHP 5.3.18...

mensabrot

Ich hatte das Problem auch - gemeinsam mit meinem Webhoster haben wir gesucht und er hat die Lösung gefunden - eine Änderung der include/keyword.inc.php.

<?php
/*************************
  Coppermine Photo Gallery
  ************************
  Copyright (c) 2003-2014 Coppermine Dev Team
  v1.0 originally written by Gregory Demar

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License version 3
  as published by the Free Software Foundation.

  ********************************************
  Coppermine version: 1.5.26
  $HeadURL: https://svn.code.sf.net/p/coppermine/code/trunk/cpg1.5.x/include/keyword.inc.php $
  $Revision: 8638 $
**********************************************/

if (!defined('IN_COPPERMINE')) die('Not in Coppermine...');

// ADDED QUICK KEYWORDS FUNCTIONALITY

$icon_array['edit'] = cpg_fetch_icon('ok'2);

get_meta_album_set(0);
$result cpg_db_query("SELECT keywords FROM {$CONFIG['TABLE_PICTURES']} AS r $RESTRICTEDWHERE AND keywords <> '' $ALBUM_SET");
if (
mysql_num_rows($result)) {

    
// Grab all keywords
    
print '<br />';
    
starttable("100%"$lang_search_php['keyword_list_title']);


    
// Find unique keywords
    
$keywords_array = array();
    
$keyword_count = array();

    while (list(
$keywords) = mysql_fetch_row($result)) {
        
$array explode($CONFIG['keyword_separator'], html_entity_decode($keywords));

        foreach(
$array as $word) {
            if (!
in_array($word utf_strtolower($word), $keywords_array)) {
                
$keywords_array[] = $word;
                
$keyword_count[$word] = 1;
            } else {
                
$keyword_count[$word]++;
            }
        }
    }

    
// Sort selected keywords
    
sort($keywords_array);
    
$count count($keywords_array);

    
$maxQuantity max($keyword_count);
    
$minQuantity min($keyword_count);

    
$spread $maxQuantity $minQuantity;

    
//spread should be greater than zero
    
if ($spread == 0) {
        
$spread 1;
    }

    
$step = ((25 10) / $spread);

    
// Result to table
    
echo '<tr><td class="tableb">';
    for (
$i 0$i $count$i++) {
        if (
$keywords_array[$i]) { // Eliminates Null Keywords

            
$fontSize = (10 + ($keyword_count[$keywords_array[$i]] - $minQuantity) * $step);
            
$keyword_param urlencode($keywords_array[$i]);
            echo 
'<a href="thumbnails.php?album=search&amp;keywords=on&amp;search='.$keyword_param.'" style="font-size: '.$fontSize.'px;">'.htmlspecialchars($keywords_array[$i], ENT_COMPAT'UTF-8').'</a>';
            if (
$i<$count-1) { // Don't keep space after last keyword
                
echo ' ';
            }
        }
    }
    echo 
'</td></tr>';
    if (
GALLERY_ADMIN_MODE == true) {
        
$url basename($CPG_PHP_SELF);
        if (
$url != 'keywordmgr.php'){
            echo 
'<tr><td class="tableb" align="center">';
            echo 
'<a href="keywordmgr.php" class="button">' $icon_array['edit'] . $lang_search_php['edit_keywords'] . '</a>';
            echo 
'</td></tr>';
        }
    } else {
        echo 
'<tr><td class="tableb" align="center">';
        echo 
$lang_search_php['keyword_msg'];
        echo 
'</td></tr>';
    }

    
endtable();
}
?>


Liebe Grüße
Alfred

Αndré

Die Lösung ist im Grunde die Gleiche, zu der ich oben schon verlinkt habe. Außer include/keyword.inc.php muss übrigens noch displayimage.php angepasst werden.

Mich würde allerdings interessieren, ob
htmlspecialchars($keywords_array[$i])
anstatt
htmlspecialchars($keywords_array[$i], ENT_COMPAT, 'UTF-8')
bei dir auch funktioniert, Alfred. Falls nämlich nicht, würde ich den Code für cpg1.5.28 nochmals anpassen.

mensabrot

Hallo André,

ja geht.

Liebe Grüße
Alfred

mensabrot

Zu früh gefreut, zwar stimmt es jetzt mit den Umlauten in allen Eingabefenstern, auch im Suchenfenster, dafür wird es jetzt unter den Bildern falsch angezeigt.
Z.B. hier: http://fotografius.de/galerie/displayimage.php?album=3&pid=3#top_display_media
Testaccount: test (test)

Αndré

Bitte lesen:
Quote from: Αndré on February 14, 2014, 09:13:10 AM
Außer include/keyword.inc.php muss übrigens noch displayimage.php angepasst werden.

Siehe auch: http://sourceforge.net/p/coppermine/code/8644/

mensabrot


sindbad5

Erstmal danke für diesen Thread. Doch nun verratet mir bitte, warum nach der Anpassung der beiden Dateien die Umlaute in einem Alben korrekt dargestellt werden und im anderen nicht?

Hier stimmt es auf meinem Display nicht:
http://www.medienarchiv.com/a-archiv/displayimage.php?album=153&pid=21180#top_display_media

Das Wort Südostasien ist falsch.

Im benachbarten Album stimmt es:
http://www.medienarchiv.com/a-archiv/displayimage.php?album=154&pid=21195#top_display_media


Den Cache habe ich mehrmals gelöscht und meinen Rechner neu gestartet. Leider bleibt es so. Seht ihr das auch?

Tom   

Αndré

Benutzt du
htmlspecialchars($keywords_array[$i], ENT_COMPAT, 'UTF-8')
oder
htmlspecialchars($keywords_array[$i])
?

sindbad5

Ich habe beide Versionen ausprobiert. Die Dateien mit der falschen Darstellung habe ich gelöscht und mit anderen Namen erneut hochgeladen. Der Fehler blieb bei beiden Varianten.
Interessanterweise wird die Darstellung korrigiert wenn man auf den Button 'Exif-Daten neu einlesen' klickt. Jetzt bräuchte man eine Möglichkeit, dies für alle Daten im Album zu veranlassen. 

Tom

Αndré

Ich würde das Problem gern an der Wurzel packen. Ich bin mir gerade nicht sicher, was EXIF damit zu tun haben soll, da Coppermine höchstens IPTC-Daten importiert. Da das Problem scheinbar reproduzierbar ist, würde ich dich bitten mir die betroffenen Dateien zur Verfügung zu stellen und mir zu erklären, wie genau ich das Problem selbst nachstellen kann.

sindbad5

Gerne, wie kann ich sie dir zustellen? Andererseits sind sie ja schon im Netz unter den genannten Adressen.
Exif hat bestimmt nichts damit zu tun, denn es sind IPTC-Infos. Ich nahm an, dass mit einem Klick auf den Button auch die IPTC Daten aktualiert wurden.

Tom