Blokowanie komunikatów z mySQL. Złe kodowanie znaków?

0

Podczas zapytania bazy danych pojawia się taki błąd:

File 'c:\mysql\share\charsets?.conf' not found (Errcode: 2) Character set '#33' is not a compiled character set and is not specified in the 'c:\mysql\share\charsets\Index' file

Jest to błąd serwera. Jak można zablokować ten komunikat żeby nie pojawiał się na stronce.

0

ustawić error_reporting na niższą wartość lub przechwytywać przez set_error_handler i nie wyświetlać tylko tego błędu, ale mi się wydaje że tu pomogłoby po połączeniu zapytanie wybierające kodowanie dla połączenia, np:

mysql_query("SET CHARACTER SET 'latin2'");

// a takie wątki jak ten to do php czy sql ? :>

0

PHP bo to z poziomu PHP sie dzieje :P. Problem jest taki ze nie mam dostepu do serwera, a na serwie jest tylko utf-8. Sprobuje ustawic ten charset. Jak ustawic error_reporting?

0

podałem ci nazwy funkcji to robiące, inaczej napisałbym

zmiejszyć stopień raportowania błędów lub przechwytywać błędyi nie wyświetlać tego błędu

skoro wiesz że jest tylko utf-8 to wpisz utf8 zamiast latin2

0

Ani zmiana na utf8 ani zmiejszenie poziomu nic nie daje. Jakieś inne propozycje?

0

możesz skorzystać z funkcji error_log(), wtedy wskazujesz gdzie mają pójsć komunikaty o błędach (trzeba ją wywołać przed error_reporting()

druga opcja to set_error_handler()


function moja_obsluga_bledu($aErrorNo, $aErrorStr, $aFile, $aLine, $aContext){
        $headers = "From: [email protected]\r\n";
        $headers .= "MIME-Version: 1.0\r\n";
        $body = "Numer bledu: ".$aErrorNo."\nTresc bledu: ".$aErrorStr."\nPlik wystapienia bledu: ".$aFile."\nLinia wystapienia bledu: ".$aLine."\nContext: ".$aContext;
        mail("[email protected]", "Błąd na stronie strona.pl", $body, $headers);
        header('Location: error.php');
        exit;
    }
    set_error_handler("moja_obsluga_bledu");
    error_reporting(2048);

po tej funkcji błąd zostanie wysłany na maila a nie wyświetli się na stronie. no i stronka zostanie przekierowana na stronę error.php

0

Sprobuj
@ $result = mysql_query("SET CHARACTER SET 'latin2'");

0

Nic to nie daje, obawiam się że to jakiś problem ze stroną kodową pliku. Czy zna ktoś jakiś program do konwersji plików między różnymi systemami kodowania znaków?

0

Gżegżółka - osobiście używam i jestem zadowolony. Działa sprawnie i ma multum kodowań do wyboru (chyba wszystkie polskie od zarania dziejów używane).

0

Zmiana kodowania znaków nic nie pomogła :/ Ustaliłem na pewno że message wywołuje funkcja mysql_connect() a na serwerze jest system kodowania utf8 natomiast system porównań to utf8_general_ci. Systemu porównań nie da się zmienić.

Zresztą zobaczcie sami: http://remborpartners.com

HEEELP [!!!]

0

Mi tu coś pachnie złą konfiguracją MySQL...
A skoro się dzieje to przy mysql_connect to @mysql_connect() chyba sprawę powinno załatwić.

U mnie na lokalnym serwerze miałem sytuację podobną, ale tylko w przypadku gdy do bazy przekazywałem dane zawierające niekóre pl literki i sprawa została załatwiona ustawieniem kodowania po połączeniu:

mysql_query("SET CHARACTER SET latin2");
mysql_query("SET NAMES latin2");
mysql_query("SET COLLATION_DATABASE='latin2_general_ci");

Choć tutaj należy wykorzystać UTF-8. Piszesz, że nie działa - ustawiłeś wszystkie opcje?

1 użytkowników online, w tym zalogowanych: 0, gości: 1