Iñ;t&xEB;rn和xE2;ti&xF4;n&xE0;利兹æ;ti和xF8;n显示为I;t&xffd;rn和xFFFD;ti和xFFFD;n;利兹;ti和xFFFD;javascript页面上的n
我接收一个csv文件,其中包含测试值'Iñtërn–tiônálizætiôn',并使用JavaScript将其输出到一个简单的HTML表 该表将输出显示为I�T�注册护士�钛�N�利兹�钛�N我一直在网上搜索,并尝试了更改字体和字符集的建议(尝试了UTF-8、UTF-16、windows-1252、iso 8859-1和iso 8859-5),但没有任何效果 它是一种拖放操作,接收csv并将其更改为网页上的HTML表格,并使用xml输出同一表格的word文档 对不起,我应该说:-这个页面上没有PHP,它都发生在本地浏览器中,因此是JavaScript。此外,我无法控制正在使用的文件的编码或用户浏览器中的设置。我猜想,我的大多数用户都将在excel中创建此文件 代码如下:Iñ;t&xEB;rn和xE2;ti&xF4;n&xE0;利兹æ;ti和xF8;n显示为I;t&xffd;rn和xFFFD;ti和xFFFD;n;利兹;ti和xFFFD;javascript页面上的n,javascript,Javascript,我接收一个csv文件,其中包含测试值'Iñtërn–tiônálizætiôn',并使用JavaScript将其输出到一个简单的HTML表 该表将输出显示为I�T�注册护士�钛�N�利兹�钛�N我一直在网上搜索,并尝试了更改字体和字符集的建议(尝试了UTF-8、UTF-16、windows-1252、iso 8859-1和iso 8859-5),但没有任何效果 它是一种拖放操作,接收csv并将其更改为网页上的HTML表格,并使用xml输出同一表格的word文档 对不起,我应该说:-这个页面上没有
<div id="drop_zone">Drop files here</div>
<output id="list"></output>
<script type="text/javascript" >
var URLadd = "My url here";
var OutString = [];
var TestFunc = [];
function handleFileSelect(evt) { // function 1 bracket
evt.stopPropagation();
evt.preventDefault();
var files = evt.dataTransfer.files; // FileList object.
// files is a FileList of File objects. List some properties.
var output = [];
oForm = document.forms[0];
oText = oForm.elements["Inst"];
var InstCode = oText.value;
if (InstCode == "")
{
InstCode = "<b>Please enter your institution code</b>";
}
for (var i = 0, f; f = files[i]; i++) { // loop 1
if (f.name.match('\.csv')) { // if 1
// this part is for when a csv file is drag n dropped
var Filename = decodeURI(escape(f.name));
var reader = new FileReader();
// when the file loads, the function beneath is run
reader.onload = (function(theFile) { // function 2
// this function is executed before it is returned, by the last parenthesis (f)
return function(e) { //function 3
var contents = e.target.result;
var FileLines = contents.split( "\n" );
var LineCount = FileLines.length;
OutString = '<table id="mytab" border="1" width="100%"><tr>';
var ColCount = 1;
for (var i=1; i<LineCount; ++i)
{ // loop 2
if (ColCount>4)
{ColCount=0;}
if(ColCount==0)
{ // if 2
OutString += '</tr><tr>';
ColCount = 1;
} // close if 2
OutString += '<td width=25%>';
var CommaSplit = FileLines[i].split(",");
var CommaCount = CommaSplit.length;
if (CommaCount == 5)
{ // if 3
OutString += "<strong> " + CommaSplit[0] + " " + CommaSplit[1] + "</strong><br>";
OutString += "Username: " + CommaSplit[3] + "<br>Password: " + CommaSplit[3];
OutString += "<br>Institution Code: " + InstCode + "<br>" + URLadd;
ColCount += 1;
} else { // else of if 3
for (var j= 0; j<CommaCount; ++j)
{ // loop 3
OutString += CommaSplit[j] + '<br>';
ColCount += 1;
} // close loop 3
} //close if 3
OutString += '</td>';
} // close loop 2
OutString += '</tr></table>';
TestFunc = '<html xmlns:v="urn:schemas-microsoft-com:vml" ';
TestFunc += 'xmlns:o="urn:schemas-microsoft-com:office:office" ';
TestFunc += 'xmlns:w="urn:schemas-microsoft-com:office:word" ';
TestFunc += 'xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" ';
TestFunc += 'xmlns="http://www.w3.org/TR/REC-html40">';
TestFunc += '<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta><title>Passwords Doc</title>';
TestFunc += '<style>v\:* {behavior:url(#default#VML);}o\:* {behavior:url(#default#VML);}w\:* {behavior:url(#default#VML);}.shape behavior:url(#default#VML);}</style>';
TestFunc += '<style>@page{mso-page-orientation: landscape; size:29.7cm 21cm; margin:0cm 0cm 0cm 0cm;}';
TestFunc += '@page Section1 {mso-header-margin:0in; mso-footer-margin:0in; mso-header: h1; mso-footer: f1; }';
TestFunc += ' div.Section1 { page:Section1; }';
TestFunc += 'table#mytab{ margin: 0.2in 0.2in 0.2in 0.2in; width:0px; height:0px; overflow:hidden;}';
TestFunc += '</style><xml><w:WordDocument><w:View>Print</w:View><w:Zoom>100</w:Zoom><w:DoNotOptimizeForBrowser/>';
TestFunc += '</w:WordDocument></xml></head><body><div class="Section1">';
TestFunc += OutString;
TestFunc += '</div></body></html>';
var OutPutLine = "<a href='data:application/msword;charset=UTF-8, " + encodeURIComponent(TestFunc) + "' download='" + decodeURIComponent(escape('Login Slips.doc')) + "' ><input id='Button1' type='button' value='Open printable sheet' /></a>";
output.push(OutPutLine);
document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
var span = document.createElement('span');
span.innerHTML = [OutString].join('');
document.getElementById('list').insertBefore(span, null);
}; // close function 3
})(f); // close function 2
reader.readAsText(f);
// this creates the button that opens the finished document
//var OutPutLine = "<a href='WordTemplate.doc' ><input id='Button1' type='button' value='Open printable sheet' /></a>";
output.push(OutPutLine);
} else { // else of if 1
// this triggers if its not a csv file that drag n drops
output.push('<strong>', escape(f.name), ' is not a comma seperated (.csv) file!!!!</strong>');
} // close if 1
} // close loop 1
document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
} // close function 1
function handleDragOver(evt) { // function 4
evt.stopPropagation();
evt.preventDefault();
evt.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy.
} // close function 4
// Setup the dnd listeners.
var dropZone = document.getElementById('drop_zone');
dropZone.addEventListener('dragover', handleDragOver, false);
dropZone.addEventListener('drop', handleFileSelect, false);
</script>
将文件放到这里
var URLadd=“我的url在此”;
var OutString=[];
var TestFunc=[];
函数句柄文件选择(evt){//函数1括号
evt.stopPropagation();
evt.preventDefault();
var files=evt.dataTransfer.files;//文件列表对象。
//文件是文件对象的文件列表。请列出一些属性。
var输出=[];
oForm=document.forms[0];
oText=形式元素[“Inst”];
var InstCode=oText.value;
如果(InstCode==“”)
{
InstCode=“请输入您的机构代码”;
}
对于(vari=0,f;f=files[i];i++){//循环1
if(f.name.match('\.csv')){//if 1
//此部分用于拖放csv文件时
var Filename=decodeURI(转义(f.name));
var reader=new FileReader();
//加载文件时,将运行下面的函数
reader.onload=(函数(theFile){//函数2
//此函数在返回前由最后一个括号(f)执行
返回函数(e){//函数3
var内容=e.target.result;
var FileLines=contents.split(“\n”);
var LineCount=FileLines.length;
突出='';
var ColCount=1;
对于(var i=1;i4)
{ColCount=0;}
if(ColCount==0)
{//if 2
突出+='';
ColCount=1;
}//如果为2,则关闭
突出+='';
var CommaSplit=FileLines[i]。拆分(“,”;
var CommaCount=CommaSplit.length;
如果(CommaCount==5)
{//if 3
突出显示+=“”+CommaSplit[0]+“+CommaSplit[1]+”
”;
OutString+=“用户名:”+CommaSplit[3]+“
密码:”+CommaSplit[3];
OutString+=”
机构代码:“+InstCode+”
“+URLadd;
ColCount+=1;
}else{//if 3的else
对于(var j=0;j您是否完成了此处列出的所有操作?)� 字符表示被解释为UTF-8的字符串中的无效字节。这意味着您的基本字节字符串(来自文件或数据库)以传统编码(如ISO-8895-1)进行物理存储并在以后强制解释为UTF-8。通过在文本编辑器中打开文件并将其重新保存为UTF-8来更改文件编码。如果处理链中存在更多编码错误,这当然不会有可靠的帮助。抱歉,我应该说:-我无法控制正在使用的文件的编码或用户的br中的设置我的大多数用户将在excel中创建此文件,因此我想我正在寻找一种以编程方式转换为utf-8的方法,如果这是解决方案的话� 字符表示字符串已断开。此时,您无法对HTTP头或其他任何操作提供帮助。字符串将保持断开状态。您必须确定处理链中断开字符串的点。reader.readAsText(f);
看起来可疑。请尝试reader.readAsText(f,“Windows-1252”)
.Tomalak,这真是太棒了!把它作为答案放进去,我会很乐意接受的。谢谢。