How do you know what encoding the user is inputing into the browser?

前端 未结 3 1727
南旧
南旧 2021-01-26 11:52

I read Joel\'s article about character sets and so I\'m taking his advice to use UTF-8 on my web page and in my database. What I can\'t understand is what to do with user input

3条回答
  •  遥遥无期
    2021-01-26 12:23

    If your web-page using UTF-8, browser will convert to UTF-8 for you. So, even the special characters are in ASCII it will submit as UTF-8.

    However, you never know itchy hand from an user that switch back the page encoding to ISO-8859-*.

    You can make use on mb_detect_encoding, but is not 100% bullet-proof.

    /* Detect character encoding with current detect_order */
    echo mb_detect_encoding($str);
    
    /* "auto" is expanded to "ASCII,JIS,UTF-8,EUC-JP,SJIS" */
    echo mb_detect_encoding($str, "auto");
    
    /* Specify encoding_list character encoding by comma separated list */
    echo mb_detect_encoding($str, "JIS, eucjp-win, sjis-win");
    
    /* Use array to specify encoding_list  */
    $ary[] = "ASCII";
    $ary[] = "JIS";
    $ary[] = "EUC-JP";
    echo mb_detect_encoding($str, $ary);
    

提交回复
热议问题