JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://raw.github.com/walling/unorm/master/src/unorm.js"></script>
<script src="https://raw.github.com/walling/unorm/master/src/unormdata.js"></script>
CSS
body{
padding: 25px;
padding-top: 0px;
font-family: sans-serif;
font-size: 10pt;
}
h1,h2{
font-size: 12pt;
font-weight: bold;
margin-top: 25px;
margin-bottom: 3px;
}
h2{
font-weight: normal;
margin-top: 10px;
}
JavaScript
// This comes from event.dataTransfer.files[0].name
var filenameFromJS = "Designhåndbog.pdf";
// This comes from the server when the file transfer is complete
var filenameFromServer = "Designhåndbog.pdf";
function print(str){ $('body').append(str + "<br />"); }
function printhl(str){ $('body').append("<h1>" + str + "</h1>"); }
function printhl2(str){ $('body').append("<h2>" + str + "</h2>"); }
printhl('Not normalized');
printhl2("String compare with ==");
print(filenameFromJS == filenameFromServer); // I need this to return true
printhl2("Raw - length");
print(filenameFromJS + " (string length: " + filenameFromJS.length + ")");
print(filenameFromServer + " (string length: " + filenameFromServer.length + ")");
printhl2("Escaped using escape()");
print(escape(filenameFromJS));
print(escape(filenameFromServer));
// The different types of normalization http://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms
// NFD
printhl('NFD normalized');
var filenameFromJSNFD = UNorm.nfd(filenameFromJS);
var filenameFromServerNFD = UNorm.nfd(filenameFromServer);
printhl2("String compare with ==");
print(filenameFromJSNFD == filenameFromServerNFD);
printhl2("Raw - length");
print(filenameFromJSNFD + " (string length: " + filenameFromJSNFD.length + ")");
print(filenameFromServerNFD + " (string length: " + filenameFromServerNFD.length + ")");
printhl2("Escaped using escape()");
print(escape(filenameFromJSNFD));
print(escape(filenameFromServerNFD));
// NFC
printhl('NFC normalized');
var filenameFromJSNFC = UNorm.nfc(filenameFromJS);
var filenameFromServerNFC = UNorm.nfc(filenameFromServer);
printhl2("String compare with ==");
print(filenameFromJSNFC == filenameFromServerNFC);
printhl2("Raw - length");
print(filenameFromJSNFC + " (string length: " + filenameFromJSNFC.length + ")");
print(filenameFromServerNFC + " (string length: " + filenameFromServerNFC.length + ")");
printhl2("Escaped using...