Results 1 to 8 of 8

Thread: "Special" characters

  1. #1
    Join Date
    Nov 2009
    Posts
    24

    Default "Special" characters

    I have my database UTF-8 collated.

    IndexU is UTF-8 compliant.

    Why, then, when I enter anything in category names with a character from non-Latin alphabet, does the category page not get displayed. There seems to be a problem using "special characters" in page titles....
    Csillamvilag.com
    Bodypainting, Facepainting, Glitter, Henna

  2. #2
    Join Date
    Aug 2001
    Location
    Indonesia
    Posts
    3,732

    Default

    What is the url? Let me check it.

  3. #3
    Join Date
    Sep 2005
    Location
    Poland - Warsaw
    Posts
    342

    Default

    the problem is in SEORewrite function:

    take a look here: http://www.nicecoder.com/community/f...bad-urls-9239/ may be it will help you a bit.

  4. #4
    Join Date
    Aug 2001
    Location
    Indonesia
    Posts
    3,732

    Default

    Thank you for your direction, linksor.
    That's great.

  5. #5
    Join Date
    Mar 2007
    Posts
    26

    Default

    It's not that difficult....
    just modify the SEORewrite function to make REAL clean urls. That's what I do in my Indexu script, because dody's don't work very well.

    PHP Code:
    seo_rewrite("Umeĺ____Adr'salat__/__Café");

    function 
    seo_rewrite($string)
      {
        
    $string remove_accents($string);
        
    $string preg_replace ('|[^a-z0-9]|i''_'$string);
        
    $string preg_replace ("/(_){2,}/","_"$string);

        return 
    $string;
      }

    function 
    remove_accents($string)
      {
        if (!
    preg_match('/[\x80-\xff]/'$string)) return $string;

        if (
    seems_utf8($string))
          {
            
    $chars = array(
            
    // Decompositions for Latin-1 Supplement
            
    chr(195).chr(128) => 'A'chr(195).chr(129) => 'A',
            
    chr(195).chr(130) => 'A'chr(195).chr(131) => 'A',
            
    chr(195).chr(132) => 'A'chr(195).chr(133) => 'A',
            
    chr(195).chr(135) => 'C'chr(195).chr(136) => 'E',
            
    chr(195).chr(137) => 'E'chr(195).chr(138) => 'E',
            
    chr(195).chr(139) => 'E'chr(195).chr(140) => 'I',
            
    chr(195).chr(141) => 'I'chr(195).chr(142) => 'I',
            
    chr(195).chr(143) => 'I'chr(195).chr(145) => 'N',
            
    chr(195).chr(146) => 'O'chr(195).chr(147) => 'O',
            
    chr(195).chr(148) => 'O'chr(195).chr(149) => 'O',
            
    chr(195).chr(150) => 'O'chr(195).chr(153) => 'U',
            
    chr(195).chr(154) => 'U'chr(195).chr(155) => 'U',
            
    chr(195).chr(156) => 'U'chr(195).chr(157) => 'Y',
            
    chr(195).chr(159) => 's'chr(195).chr(160) => 'a',
            
    chr(195).chr(161) => 'a'chr(195).chr(162) => 'a',
            
    chr(195).chr(163) => 'a'chr(195).chr(164) => 'a',
            
    chr(195).chr(165) => 'a'chr(195).chr(167) => 'c',
            
    chr(195).chr(168) => 'e'chr(195).chr(169) => 'e',
            
    chr(195).chr(170) => 'e'chr(195).chr(171) => 'e',
            
    chr(195).chr(172) => 'i'chr(195).chr(173) => 'i',
            
    chr(195).chr(174) => 'i'chr(195).chr(175) => 'i',
            
    chr(195).chr(177) => 'n'chr(195).chr(178) => 'o',
            
    chr(195).chr(179) => 'o'chr(195).chr(180) => 'o',
            
    chr(195).chr(181) => 'o'chr(195).chr(182) => 'o',
            
    chr(195).chr(182) => 'o'chr(195).chr(185) => 'u',
            
    chr(195).chr(186) => 'u'chr(195).chr(187) => 'u',
            
    chr(195).chr(188) => 'u'chr(195).chr(189) => 'y',
            
    chr(195).chr(191) => 'y',
            
    // Decompositions for Latin Extended-A
            
    chr(196).chr(128) => 'A'chr(196).chr(129) => 'a',
            
    chr(196).chr(130) => 'A'chr(196).chr(131) => 'a',
            
    chr(196).chr(132) => 'A'chr(196).chr(133) => 'a',
            
    chr(196).chr(134) => 'C'chr(196).chr(135) => 'c',
            
    chr(196).chr(136) => 'C'chr(196).chr(137) => 'c',
            
    chr(196).chr(138) => 'C'chr(196).chr(139) => 'c',
            
    chr(196).chr(140) => 'C'chr(196).chr(141) => 'c',
            
    chr(196).chr(142) => 'D'chr(196).chr(143) => 'd',
            
    chr(196).chr(144) => 'D'chr(196).chr(145) => 'd',
            
    chr(196).chr(146) => 'E'chr(196).chr(147) => 'e',
            
    chr(196).chr(148) => 'E'chr(196).chr(149) => 'e',
            
    chr(196).chr(150) => 'E'chr(196).chr(151) => 'e',
            
    chr(196).chr(152) => 'E'chr(196).chr(153) => 'e',
            
    chr(196).chr(154) => 'E'chr(196).chr(155) => 'e',
            
    chr(196).chr(156) => 'G'chr(196).chr(157) => 'g',
            
    chr(196).chr(158) => 'G'chr(196).chr(159) => 'g',
            
    chr(196).chr(160) => 'G'chr(196).chr(161) => 'g',
            
    chr(196).chr(162) => 'G'chr(196).chr(163) => 'g',
            
    chr(196).chr(164) => 'H'chr(196).chr(165) => 'h',
            
    chr(196).chr(166) => 'H'chr(196).chr(167) => 'h',
            
    chr(196).chr(168) => 'I'chr(196).chr(169) => 'i',
            
    chr(196).chr(170) => 'I'chr(196).chr(171) => 'i',
            
    chr(196).chr(172) => 'I'chr(196).chr(173) => 'i',
            
    chr(196).chr(174) => 'I'chr(196).chr(175) => 'i',
            
    chr(196).chr(176) => 'I'chr(196).chr(177) => 'i',
            
    chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij',
            
    chr(196).chr(180) => 'J'chr(196).chr(181) => 'j',
            
    chr(196).chr(182) => 'K'chr(196).chr(183) => 'k',
            
    chr(196).chr(184) => 'k'chr(196).chr(185) => 'L',
            
    chr(196).chr(186) => 'l'chr(196).chr(187) => 'L',
            
    chr(196).chr(188) => 'l'chr(196).chr(189) => 'L',
            
    chr(196).chr(190) => 'l'chr(196).chr(191) => 'L',
            
    chr(197).chr(128) => 'l'chr(197).chr(129) => 'L',
            
    chr(197).chr(130) => 'l'chr(197).chr(131) => 'N',
            
    chr(197).chr(132) => 'n'chr(197).chr(133) => 'N',
            
    chr(197).chr(134) => 'n'chr(197).chr(135) => 'N',
            
    chr(197).chr(136) => 'n'chr(197).chr(137) => 'N',
            
    chr(197).chr(138) => 'n'chr(197).chr(139) => 'N',
            
    chr(197).chr(140) => 'O'chr(197).chr(141) => 'o',
            
    chr(197).chr(142) => 'O'chr(197).chr(143) => 'o',
            
    chr(197).chr(144) => 'O'chr(197).chr(145) => 'o',
            
    chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe',
            
    chr(197).chr(148) => 'R',chr(197).chr(149) => 'r',
            
    chr(197).chr(150) => 'R',chr(197).chr(151) => 'r',
            
    chr(197).chr(152) => 'R',chr(197).chr(153) => 'r',
            
    chr(197).chr(154) => 'S',chr(197).chr(155) => 's',
            
    chr(197).chr(156) => 'S',chr(197).chr(157) => 's',
            
    chr(197).chr(158) => 'S',chr(197).chr(159) => 's',
            
    chr(197).chr(160) => 'S'chr(197).chr(161) => 's',
            
    chr(197).chr(162) => 'T'chr(197).chr(163) => 't',
            
    chr(197).chr(164) => 'T'chr(197).chr(165) => 't',
            
    chr(197).chr(166) => 'T'chr(197).chr(167) => 't',
            
    chr(197).chr(168) => 'U'chr(197).chr(169) => 'u',
            
    chr(197).chr(170) => 'U'chr(197).chr(171) => 'u',
            
    chr(197).chr(172) => 'U'chr(197).chr(173) => 'u',
            
    chr(197).chr(174) => 'U'chr(197).chr(175) => 'u',
            
    chr(197).chr(176) => 'U'chr(197).chr(177) => 'u',
            
    chr(197).chr(178) => 'U'chr(197).chr(179) => 'u',
            
    chr(197).chr(180) => 'W'chr(197).chr(181) => 'w',
            
    chr(197).chr(182) => 'Y'chr(197).chr(183) => 'y',
            
    chr(197).chr(184) => 'Y'chr(197).chr(185) => 'Z',
            
    chr(197).chr(186) => 'z'chr(197).chr(187) => 'Z',
            
    chr(197).chr(188) => 'z'chr(197).chr(189) => 'Z',
            
    chr(197).chr(190) => 'z'chr(197).chr(191) => 's',
            
    // Euro Sign
            
    chr(226).chr(130).chr(172) => 'E',
            
    // GBP (Pound) Sign
            
    chr(194).chr(163) => '');

            
    $string strtr($string$chars);
          }
        else
          {
            
    // Assume ISO-8859-1 if not UTF-8
            
    $chars['in'] = chr(128).chr(131).chr(138).chr(142).chr(154).chr(158)
                .
    chr(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194)
                .
    chr(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202)
                .
    chr(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210)
                .
    chr(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218)
                .
    chr(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227)
                .
    chr(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235)
                .
    chr(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243)
                .
    chr(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251)
                .
    chr(252).chr(253).chr(255);

            
    $chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy";

            
    $string strtr($string$chars['in'], $chars['out']);
            
    $double_chars['in'] = array(chr(140), chr(156), chr(198), chr(208), chr(222), chr(223), chr(230), chr(240), chr(254));
            
    $double_chars['out'] = array('OE''oe''AE''DH''TH''ss''ae''dh''th');
            
    $string str_replace($double_chars['in'], $double_chars['out'], $string);
          }
        return 
    $string;
      }

    function 
    seems_utf8($Str)
      {
        for (
    $i=0$i<strlen($Str); $i++)
          {
            if (
    ord($Str[$i]) < 0x80) continue; # 0bbbbbbb
            
    elseif ((ord($Str[$i]) & 0xE0) == 0xC0$n=1# 110bbbbb
            
    elseif ((ord($Str[$i]) & 0xF0) == 0xE0$n=2# 1110bbbb
            
    elseif ((ord($Str[$i]) & 0xF8) == 0xF0$n=3# 11110bbb
            
    elseif ((ord($Str[$i]) & 0xFC) == 0xF8$n=4# 111110bb
            
    elseif ((ord($Str[$i]) & 0xFE) == 0xFC$n=5# 1111110b
            
    else return false# Does not match any model
            
    for ($j=0$j<$n$j++)
              {
                if ((++
    $i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80))
                return 
    false;
              }
          }
        return 
    true;
      } 
    var i = {shot:{sheriff:true,deputy:false}}

  6. #6
    Join Date
    Nov 2009
    Posts
    24

    Default Can Nicecoders include this fix in the next version?

    This is an important issue. Dody, can you guys include the fix in the next version?
    Csillamvilag.com
    Bodypainting, Facepainting, Glitter, Henna

  7. #7
    Join Date
    Nov 2009
    Posts
    24

    Default

    Quote Originally Posted by linksor.com View Post
    take a look here: http://www.nicecoder.com/community/f...bad-urls-9239/ may be it will help you a bit.
    Thanks linksor!

    Now the URL is being rewritten, based on the replacement letters that I have provided, which is good.

    But I am getting a page not found error (shown in indexu template):

    Error 404 - Page Not Found
    The requested URL is not found on this server.
    Csillamvilag.com
    Bodypainting, Facepainting, Glitter, Henna

  8. #8
    Join Date
    Nov 2009
    Posts
    24

    Default Ok, it works

    Ok, looks like the crack doesn't apply to existing categories.

    But when I deleted existing categories and created them again, it worked!

    Must be part of next release. I am happy to provide replacement character lists for all supported European languages.
    Csillamvilag.com
    Bodypainting, Facepainting, Glitter, Henna

Similar Threads

  1. How to change name of "Premium" and "Sponsored" listin?
    By chunguens in forum INDEXU DELUXE v2.x
    Replies: 3
    Last Post: 03-02-2010, 05:01 AM
  2. Replies: 1
    Last Post: 01-22-2007, 08:18 PM
  3. Changing color of "new" and "hot"
    By Hetti in forum Indexu Lite
    Replies: 2
    Last Post: 09-10-2004, 09:46 AM
  4. Rename "Top" to "Index"
    By Robert in forum v5.x
    Replies: 2
    Last Post: 07-11-2004, 11:41 AM
  5. Replies: 1
    Last Post: 07-18-2002, 07:47 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •