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

Odpowiedz Nowy wątek
2006-09-16 13:03

Rejestracja: 13 lat temu

Ostatnio: 13 lat temu

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.

Pozostało 580 znaków

2006-09-16 13:10

Rejestracja: 15 lat temu

Ostatnio: 7 lat temu

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 ? :>


Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

2006-09-16 13:15

Rejestracja: 13 lat temu

Ostatnio: 13 lat temu

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?

Pozostało 580 znaków

2006-09-16 13:18

Rejestracja: 15 lat temu

Ostatnio: 7 lat temu

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


Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

2006-09-16 13:24

Rejestracja: 13 lat temu

Ostatnio: 13 lat temu

0

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

Pozostało 580 znaków

2006-09-16 13:59

Rejestracja: 14 lat temu

Ostatnio: 9 lat temu

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


Daj człowiekowi cracka a jutro znowu bedzie głodny. Naucz go crackować a już nigdy nie będzie głodny.

Pozostało 580 znaków

2006-09-17 10:36

Rejestracja: 15 lat temu

Ostatnio: 8 lat temu

0

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

Pozostało 580 znaków

2006-09-20 14:57

Rejestracja: 13 lat temu

Ostatnio: 13 lat temu

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?

Pozostało 580 znaków

2006-09-20 15:24

Rejestracja: 16 lat temu

Ostatnio: 9 lat temu

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).


Grunt to uziemienie...

Pozostało 580 znaków

2006-09-20 19:30

Rejestracja: 13 lat temu

Ostatnio: 13 lat temu

0

Zmiana kodowania znaków nic nie pomogła :/ Ustaliłem napewno ż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 [!!!]

Pozostało 580 znaków

2006-09-20 21:14
Moderator

Rejestracja: 17 lat temu

Ostatnio: 7 godzin temu

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?

Pozostało 580 znaków

Odpowiedz

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