Hi, Please does anyone else have thoughts on this topic. The problem has been bugging me since around 2.6.5. The empty TW has had non UTF-8 character \xFF buried in the jQuery script. Saving with TiddlyFox transforms this to \xFD - but still the non-UTF-8 character causes problems anyplace where strict adherence to UTF-8 is mandated. In my case the impact is in trying to save on iOS as part of TWEdit - my objective-C code is unable to read the original file as a UTF-8 file in prep for inserting the STOREAREA and reserving.
You can see the specific file problem by running the empty 2.7.0 file through the w3c validator at http://validator.w3.org I did initial experiments by brute force making the TiddlyFox output UTF-8 - it works but it is not really a good solution - it does not get to root cause. Since then I dug in and traced the fileSave execution using FireBug in FireFox. The best I can see is that the problem occurs in "updateOriginal" where "original.substr(posDiv[1])" is appended on the back end of the STOREAREA. * var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" + * * convertUnicodeToFileFormat(store.allTiddlersAsHtml()) + "\n" +* * original.substr(posDiv[1]);* I've made the change below to my version of empty.html - ensuring that "original.substr(posDiv[1])" gets converted to UTF8 before appending. * var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" + * * convertUnicodeToFileFormat(store.allTiddlersAsHtml()) + "\n" +* * convertUnicodeToFileFormat(original.substr(posDiv[1]));* * * It works - no need for my brute force version of TiddlyFox anymore - and I'm happy for now. But would really like to know if others have opinions and if others consider this is a solid solution. Cheers - Chris. function updateOriginal(original,posDiv,localPath) { if(!posDiv) posDiv = locateStoreArea(original); if(!posDiv) { alert(config.messages.invalidFileError.format([localPath])); return null; } * var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" + * * convertUnicodeToFileFormat(store.allTiddlersAsHtml()) + "\n" +* * convertUnicodeToFileFormat(original.substr(posDiv[1]));* var newSiteTitle = convertUnicodeToFileFormat(getPageTitle()).htmlEncode(); revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " "); revised = updateLanguageAttribute(revised); revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead"); revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead"); revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody"); revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody"); return revised; } -- You received this message because you are subscribed to the Google Groups "TiddlyWikiDev" group. To view this discussion on the web visit https://groups.google.com/d/msg/tiddlywikidev/-/jGi6gbhjeg4J. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/tiddlywikidev?hl=en.
