<html>
    <head>
        <title>Encoding test.</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
           </head>
    <body>
        This page tests that the character encoding is used for dynamically loaded 
        scripts when no charset is specified directly or provided by the server.
        
        <div id="target"></div>
        <script>
            if (window.testRunner) {
                window.testRunner.waitUntilDone();
                window.testRunner.dumpAsText();
            }
            tokyo = 'とうきょう';
            oDIVResults=document.createElement('script'); 
            oDIVResults.src="resources/dynamic-load-target.js";
            document.getElementsByTagName("head").item(0).appendChild(oDIVResults);
        </script>
    </body>
</html>
