root/10020_output_encode_in_utf8.patch @ 61:39fe80acca15

Revision 61:39fe80acca15, 9.3 KB (checked in by Jiang Xin <worldhello.net AT gmail DOT com>, 3 years ago)

Fixed #18: Mindmap saved in utf-8 when export as flash.

  • accessories/freemind2flash.xsl

    diff -r 49fd2454c340 accessories/freemind2flash.xsl
    a b  
    1 <?xml version="1.0" encoding="iso-8859-1"?> 
     1<?xml version="1.0" encoding="utf-8"?> 
    22<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    33                version="1.0"> 
    44 
     
    4444  <xsl:template match="/"> 
    4545    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    4646      <head> 
    47 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
     47<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    4848                <title><xsl:call-template name="output-title" /></title> 
    4949        <xsl:element name="script"> 
    5050            <xsl:attribute name="type">text/javascript</xsl:attribute> 
  • accessories/plugins/ExportWithXSLT.java

    diff -r 49fd2454c340 accessories/plugins/ExportWithXSLT.java
    a b  
    5252import accessories.plugins.util.html.ClickableImageCreator; 
    5353import accessories.plugins.util.xslt.ExportDialog; 
    5454import freemind.extensions.ExportHook; 
     55import freemind.main.FreeMind; 
    5556import freemind.main.Resources; 
    5657import freemind.main.Tools; 
    5758import freemind.modes.MindIcon; 
     
    183184    { 
    184185        boolean success = true; 
    185186//      Generating output Stream             
    186         BufferedWriter fileout = new BufferedWriter( new OutputStreamWriter( new FileOutputStream(pDirectoryName+File.separator + "map.mm") ) ); 
     187        BufferedWriter fileout = new BufferedWriter( new OutputStreamWriter( new FileOutputStream(pDirectoryName+File.separator + "map.mm"), FreeMind.DEFAULT_CHARSET ) ); 
    187188        getController().getMap().getFilteredXml(fileout); 
    188189        return success; 
    189190    } 
  • freemind/main/FreeMind.java

    diff -r 49fd2454c340 freemind/main/FreeMind.java
    a b  
    128128        // OSSXP.COM: set oem version. 
    129129        public static final String HACKEDVERSION = "(MMX Hack <REVISION>, from ossxp.com)"; 
    130130 
     131        // OSSXP.COM: set output character set to utf-8. 
     132        public static final String DEFAULT_CHARSET = "UTF-8"; 
     133 
    131134        public static final String XML_VERSION = "0.9.0"; 
    132135 
    133136        public static final String RESOURCES_REMIND_USE_RICH_TEXT_IN_NEW_LONG_NODES = "remind_use_rich_text_in_new_long_nodes"; 
  • freemind/main/HtmlTools.java

    diff -r 49fd2454c340 freemind/main/HtmlTools.java
    a b  
    332332                for (int i = 0; i < text.length(); ++i) { 
    333333                        myChar = text.charAt(i); 
    334334                        intValue = (int) text.charAt(i); 
    335                         if (intValue < 32 || intValue > 126) { 
     335                        if (intValue < 32 || !Resources.getInstance().getBoolProperty("wh_nonascii_in_utf8") && intValue > 126) { 
    336336                                result.append("&#x").append(Integer.toString(intValue, 16)) 
    337337                                                .append(';'); 
    338338                        } else { 
  • freemind/main/XMLElement.java

    diff -r 49fd2454c340 freemind/main/XMLElement.java
    a b  
    21182118    { 
    21192119        try { 
    21202120            ByteArrayOutputStream out = new ByteArrayOutputStream(); 
    2121             OutputStreamWriter writer = new OutputStreamWriter(out); 
     2121            // OSSXP.COM: Encode output to default_charset(UTF-8).  
     2122            OutputStreamWriter writer = new OutputStreamWriter(out, FreeMind.DEFAULT_CHARSET); 
    21222123            this.write(writer); 
    21232124            writer.flush(); 
    21242125            return new String(out.toByteArray()); 
     
    22702271                    break; 
    22712272                default: 
    22722273                    int unicode = (int) ch; 
    2273                     if ((unicode < 32) || (unicode > 126)) { 
     2274                    // OSSXP.COM: do not convert Chinese characters into &#blahblah; 
     2275                    if (!Resources.getInstance().getBoolProperty("wh_nonascii_in_utf8") && unicode > 126 || unicode < 32) { 
    22742276                        writer.write('&'); writer.write('#'); 
    22752277                        writer.write('x'); 
    22762278                        writer.write(Integer.toString(unicode, 16)); 
  • freemind/modes/StylePattern.java

    diff -r 49fd2454c340 freemind/modes/StylePattern.java
    a b  
    504504 
    505505 
    506506            //Generating output Stream 
    507             BufferedWriter fileout = new BufferedWriter( new OutputStreamWriter( new FileOutputStream(file) ) ); 
     507            BufferedWriter fileout = new BufferedWriter( new OutputStreamWriter( new FileOutputStream(file) ) ); // in comments 
    508508            pattern.write(fileout); 
    509509 
    510510            fileout.close(); 
  • freemind/modes/mindmapmode/MindMapController.java

    diff -r 49fd2454c340 freemind/modes/mindmapmode/MindMapController.java
    a b  
    114114import freemind.extensions.HookFactory.RegistrationContainer; 
    115115import freemind.main.ExampleFileFilter; 
    116116import freemind.main.FixedHTMLWriter; 
     117import freemind.main.FreeMind; 
    117118import freemind.main.HtmlTools; 
    118119import freemind.main.Resources; 
    119120import freemind.main.Tools; 
     
    17291730 
    17301731    static public void saveHTML(MindMapNodeModel rootNodeOfBranch, File file) throws IOException { 
    17311732        BufferedWriter fileout = new BufferedWriter(new OutputStreamWriter( 
    1732                 new FileOutputStream(file))); 
     1733                new FileOutputStream(file), FreeMind.DEFAULT_CHARSET)); 
    17331734        MindMapHTMLWriter htmlWriter = new MindMapHTMLWriter( 
    17341735                fileout); 
    17351736        htmlWriter.saveHTML(rootNodeOfBranch);       
  • freemind/modes/mindmapmode/MindMapHTMLWriter.java

    diff -r 49fd2454c340 freemind/modes/mindmapmode/MindMapHTMLWriter.java
    a b  
    9292        for (int i = 0; i < len; ++i) { 
    9393            myChar = text.charAt(i); 
    9494            intValue = (int) text.charAt(i); 
    95             if (intValue >= 128) { 
     95            if (!Resources.getInstance().getBoolProperty("wh_nonascii_in_utf8") && intValue >= 128) { 
    9696                result.append(convertSpecialChar(myChar)); 
    9797            } 
    9898            else { 
     
    690690        return Resources.getInstance().getProperty(key); 
    691691    } 
    692692 
    693 } 
    694  No newline at end of file 
     693} 
  • freemind/modes/mindmapmode/MindMapMapModel.java

    diff -r 49fd2454c340 freemind/modes/mindmapmode/MindMapMapModel.java
    a b  
    171171   public boolean saveTXT(MindMapNodeModel rootNodeOfBranch, File file) { 
    172172        // Returns success of the operation. 
    173173        try { 
    174             BufferedWriter fileout = new BufferedWriter( new OutputStreamWriter( new FileOutputStream(file) ) ); 
     174            BufferedWriter fileout = new BufferedWriter( new OutputStreamWriter( new FileOutputStream(file), FreeMind.DEFAULT_CHARSET ) ); 
    175175            rootNodeOfBranch.saveTXT(fileout,/*depth=*/0); 
    176176            fileout.close(); 
    177177            return true; 
     
    252252                if(timerForAutomaticSaving != null) { 
    253253                        timerForAutomaticSaving.cancel(); 
    254254                } 
    255             BufferedWriter fileout = new BufferedWriter( new OutputStreamWriter( new FileOutputStream(file) ) ); 
     255            // OSSXP.COM: save file using default character set. 
     256            BufferedWriter fileout = new BufferedWriter( new OutputStreamWriter( new FileOutputStream(file), FreeMind.DEFAULT_CHARSET ) ); 
    256257            getXml(fileout); 
    257258 
    258259            if(!isInternal) { 
     
    280281         * @throws IOException 
    281282         */ 
    282283        private void getXml(Writer fileout, boolean saveInvisible) throws IOException { 
     284                // OSSXP.COM: write xml declare. 
     285                fileout.write("<?xml version=\"1.0\" encoding=\"" + FreeMind.DEFAULT_CHARSET + "\"?>\n"); 
    283286                fileout.write("<map "); 
    284287                fileout.write("version=\""+FreeMind.XML_VERSION+"\""); 
    285288                fileout.write(">\n"); 
     
    361364 
    362365    MindMapNodeModel loadTree(File file) throws XMLParseException, IOException { 
    363366        int versionInfoLength; 
    364                 versionInfoLength = EXPECTED_START_STRINGS[0].length(); 
     367        versionInfoLength = 0; 
    365368        // reading the start of the file: 
    366         StringBuffer buffer = readFileStart(file, versionInfoLength); 
     369        // OSSXP.COM:  
     370        //     because we add a xml declare, the mm file now begin with "<xml",  
     371        //     so direct match mmap version will failed. 
     372        //     search "<map" and store matched line into buffer. 
     373        BufferedReader in=null; 
     374        String buffer = null; 
     375        try { 
     376                // get the file start into the memory: 
     377                in = new BufferedReader(new FileReader(file)); 
     378                while ((buffer = in.readLine()) != null) { 
     379                        // buffer contains line start with "<map", stop matching. 
     380                        if (buffer.substring(0,4).equals("<map")) 
     381                        { 
     382                                break; 
     383                        } 
     384                } 
     385                in.close(); 
     386        } catch (Exception e) { 
     387                e.printStackTrace(); 
     388                buffer = ""; 
     389        } 
     390         
    367391        // the resulting file is accessed by the reader: 
    368392        Reader reader = null; 
    369393        for(int i = 0; i < EXPECTED_START_STRINGS.length; i++){ 
Note: See TracBrowser for help on using the browser.