不同的字符集不同的服务器上? [英] Different charset on different server?

查看:103
本文介绍了不同的字符集不同的服务器上?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚本地测试我的web应用程序,一切工作正常,但上传到服务器应用程序后的行为不同。我使用的功能formatiraj_string_url转换变音符号和弄干净网址...它在本地工作正常,但在服务器上这个功能犯规将其转换以同样的方式。

I've just tested locally my web application, everything works fine, but after uploading to server application behaves differently. I use function formatiraj_string_url to convert diacritic symbols and get clean url... locally it works fine but on server this function doesnt convert them the same way.

几天,我测试了一些这方面的第三个服务器上,它工作得很好。现在我上传网页再次测试它这第三台服务器上,但我不知道有什么能真正成为这种行为的原因是什么?

Few days earlier I tested this on some third server and it worked fine. Now I'm uploading web to test it again on this third server, but I just wonder what could really be the cause of such behavior?

function formatiraj_string_url($string)
    {
        $string = strtolower($string);

        $znak[0] = ' ';
        $znak[1] = 'Š';
        $znak[2] = 'š';
        $znak[3] = 'Đ';
        $znak[4] = 'đ';
        $znak[5] = 'Č';
        $znak[6] = 'č';
        $znak[7] = 'Ć';
        $znak[8] = 'ć';
        $znak[9] = 'Ž';
        $znak[10] = 'ž';
        $znak[11] = 'Š';
        $znak[12] = 'Đ';
        $znak[13] = 'Č';
        $znak[14] = 'Ć';
        $znak[15] = 'Ž';
        $znak[16] = 'š';
        $znak[17] = 'đ';
        $znak[18] = 'č';
        $znak[19] = 'ć';
        $znak[20] = 'ž';
        $znak[21] = 'Š'; // Š
        $znak[22] = 'š'; // š

        $zamjena[0] = '-';
        $zamjena[1] = 's';
        $zamjena[2] = 's';
        $zamjena[3] = 'd';
        $zamjena[4] = 'd';
        $zamjena[5] = 'c';
        $zamjena[6] = 'c';
        $zamjena[7] = 'c';
        $zamjena[8] = 'c';
        $zamjena[9] = 'z';
        $zamjena[10] = 'z';
        $zamjena[11] = 's';
        $zamjena[12] = 'd';
        $zamjena[13] = 'c';
        $zamjena[14] = 'c';
        $zamjena[15] = 'z';
        $zamjena[16] = 's';
        $zamjena[17] = 'd';
        $zamjena[18] = 'c';
        $zamjena[19] = 'c';
        $zamjena[20] = 'z';
        $zamjena[21] = 's';
        $zamjena[22] = 's';

        $string = str_replace($znak, $zamjena, $string);
        $new_string = preg_replace("/[^a-zA-Z0-9-s]/", "", $string);
        return $new_string;
    }

编辑:str_replace函数之前,此功能使用preg_replace。在服务器上,这是错误表明:

Before str_replace, this function used preg_replace. On server this was the error showed:

Warning: preg_replace() [function.preg-replace]: Compilation failed: nothing to repeat at offset 0 in /home2/sinjcom/public_html/sinj.com.hr/administracija/include/funkcije.php on line 200

但在本地,我没有这个问题。

But locally, I didn't have this problem

推荐答案

是您的文件写入了字符集吗?

Which charset is your file written in?

既然你已经写了,你想直接替换到code,作为字符串中的字符,它们是连接在任何字符集文件使用codeD。如果字符集从您从浏览器中得到有什么不同,你的职责是行不通的。

Since you have written the characters you would like to replace directly into your code, as strings, they are encoded in whatever charset the file uses. If that charset differs from what you get from the browser, your functions aren't going to work.

你需要记住的重要一点,就是要始终保持你的字符集的字符串是带$ C $的CD曲目,转换时neccessary。

The important point you need to keep in mind, is to always keep track of the charset your strings are encoded with, and convert when neccessary.

看看的科雷Nordmanns常见问题解答关于PHP 字符集关于字符集的一些更多的指针。

Take a look at Kore Nordmanns FAQ about charsets in PHP for some more pointers about charsets.

这篇关于不同的字符集不同的服务器上?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆