How to display special characters in PHP

前端 未结 9 1299
野的像风
野的像风 2020-11-30 12:24

I\'ve seen this asked several times, but not with a good resolution. I have the following string:

$string = \"

Résumé

\";

相关标签:
9条回答
  • 2020-11-30 12:57

    The following worked for me when having a similar issue lately:

    $str = iconv('iso-8859-15', 'utf-8', $str);
    
    0 讨论(0)
  • 2020-11-30 13:02

    In PHP there is a pretty good function utf8_encode() to solve this issue.

    echo utf8_encode("Résumé");
    
    //will output Résumé instead of R�sum�
    

    Check the official PHP page.

    0 讨论(0)
  • 2020-11-30 13:02

    You can have a mix of PHP and HTML in your PHP files... just do something like this...

    <?php
    $string = htmlentities("Résumé");
    ?>
    
    <html>
    <head></head>
    <body>
    <p><?= $string ?></p>
    </body>
    </html>
    

    That should output Résumé just how you want it to.

    If you don't have short tags enabled, replace the <?= $string ?> with <?php echo $string; ?>

    0 讨论(0)
  • 2020-11-30 13:02

    This works for me:

    Create/edit .htaccess file with these lines:

    AddDefaultCharset UTF-8
    AddCharset UTF-8 .php
    

    If you prefer create/edit php.ini:

    default_charset = "utf-8"
    

    Sources:

    • https://stackoverflow.com/a/6989559/496176
    • https://stackoverflow.com/a/1610475/496176
    0 讨论(0)
  • 2020-11-30 13:03

    After much banging-head-on-table, I have a bit better understanding of the issue that I wanted to post for anyone else who may have had this issue.

    While the UTF-8 character set will display special characters on the client, the server, on the other hand, may not be so accomodating and would print special characters such as à and è as and .

    To make sure your server will print them correctly, use the ISO-8859-1 charset:

    <?php
        /*Just for your server-side code*/
        header('Content-Type: text/html; charset=ISO-8859-1');
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8"><!-- Your HTML file can still use UTF-8-->
            <title>Untitled Document</title>
        </head>
        <body>
            <?= "àè" ?>
        </body>
    </html>
    

    This will print correctly: àè


    Edit (4 years later):

    I have a little better understanding now. The reason this works is that the client (browser) is being told, through the response header(), to expect an ISO-8859-1 text/html file. (As others have mentioned, you can also do this by updating your .ini or .htaccess files.) Then, once the browser begins to parse that given file into the DOM, the output will obey any <meta charset=""> rule but keep your ISO characters intact.

    0 讨论(0)
  • 2020-11-30 13:07

    $str = "Is your name O\'vins?";

    // Outputs: Is your name O'vins? echo stripslashes($str);

    0 讨论(0)
提交回复
热议问题