<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) {
                testRunner.waitUntilDone();
                testRunner.dumpAsText();
            }
            tokyo = 'とうきょう';
            oDIVResults=document.createElement('script'); 
            oDIVResults.src="resources/dynamic-load-target.js";
            document.getElementsByTagName("head").item(0).appendChild(oDIVResults);
        </script>
    </body>
</html>
