Mazovia to UTF-8 PHP function

Ostatnio dosyć sporo męczyłem się z konwertowaniem bazy DBF Buchaltera i jej kodowaniem – Mazovią. Pomocny okazał się artykuł na cioci wiki o charach Mazovi. Poniżej banalna funkcja której raczej w internetach nie znajdziecie a jest poszukiwana.

function maz2iso($string) {
    $zmiana = array(
        chr(0x86) => chr(0xb9), // ą
        chr(0x8D) => chr(0xe6), // ć
        chr(0x91) => chr(0xea), // ę
        chr(0x92) => chr(0xb3), // ł
        chr(0xA4) => chr(0xf1), // ń
        chr(0xA2) => chr(0xf3), // ó
        chr(0x9E) => chr(0x9c), // ś
        chr(0xA6) => chr(0x9f), // ź
        chr(0xA7) => chr(0xbf), // ż
        chr(0x8F) => chr(0xa5), // Ą
        chr(0x95) => chr(0xc6), // Ć
        chr(0x90) => chr(0xca), // Ę
        chr(0x9C) => chr(0xa3), // Ł
        chr(0xA5) => chr(0xd1), // Ń
        chr(0xA3) => chr(0xd3), // Ó
        chr(0x98) => chr(0x8c), // Ś
        chr(0xA0) => chr(0x8f), // Ź
        chr(0xA1) => chr(0xaf), // Ż
    );

    $value = strtr($string, $zmiana);
    return $value;
}

Kasztelan Paweł

Programista samouk, zakochany w ZF i Laravel, szerzący opinię że PHP + JS + HTML + CSS to są języki w których może zostać stworzona aplikacja równie dobra, a nawet lepsza od twardego klienta.

  • Dawid Lorek

    Wg mnie to jest maz2win1250.

  • Dawid Lorek
  • Dawid Lorek

    Z UTF-8 do Mazovia jest większy problem, gdyż w UTF-8 polskie znaki zakodowane są na 2 znakach. Moja funkcja z UTF-8 do Mazovia w PHP:
    function utf82maz($string)
    {
    $zmiana = array(
    chr(0xC4).chr(0x85)=>chr(0x86), // ą
    chr(0xC4).chr(0x87)=>chr(0x8D), // ć
    chr(0xC4).chr(0x99)=>chr(0x91), // ę
    chr(0xC5).chr(0x82)=>chr(0x92), // ł
    chr(0xC5).chr(0x84)=>chr(0xA4), // ń
    chr(0xC3).chr(0xb3)=>chr(0xA2), // ó
    chr(0xC5).chr(0x9b)=>chr(0x9E), // ś
    chr(0xC5).chr(0xba)=>chr(0xA6), // ź
    chr(0xC5).chr(0xbc)=>chr(0xA7), // ż
    chr(0xC4).chr(0x84)=>chr(0x8F), // Ą
    chr(0xC4).chr(0x86)=>chr(0x95), // Ć
    chr(0xC4).chr(0x98)=>chr(0x90), // Ę
    chr(0xC5).chr(0x81)=>chr(0x9C), // Ł
    chr(0xC5).chr(0x83)=>chr(0xA5), // Ń
    chr(0xC3).chr(0x93)=>chr(0xA3), // Ó
    chr(0xC5).chr(0x9a)=>chr(0x98), // Ś
    chr(0xC5).chr(0xb9)=>chr(0xA0), // Ź
    chr(0xC5).chr(0xbb)=>chr(0xA1)); // Ż
    return strtr($string,$zmiana);
    }

    Korzystałem z: https://pl.wikipedia.org/wiki/Kodowanie_polskich_znak%C3%B3w