getProfileSectionsUTF8(iniPath)
Last updated July 27, 2012
Version: 1 | Requires: CF9 | Library: CFMLLib
	Description: 
	It supports to translate any unicode-based language instead of using GetProfileSections() which doesn't support Unicode (UTF-8). See http://help.adobe.com/en_US/ColdFusion/10.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-6cff.html
	Return Values: 
	Struct keyed by profile section, the values being comma-delimited lists of section entries
Example:
<cfdump var="#getProfileSectionsUTF8("/path/to/my.ini")#">
Parameters:
| Name | Description | Required | 
|---|---|---|
| iniPath | Full path to ini file to parse. | Yes | 
Full UDF Source:
/**
 * UTF8-aware implementation of getProfileSections()
 * * version 0.1 by Reinhard Jung
 * * version 1.0 by Adam Cameron - convert into single UDF & mirror usage of getProfileSections()
 * * version 1.1 by Adam Cameron (with help from Simon Baynes).  Removing debug code; correcting fileClose() behaviour
 * 
 * @param iniPath      Full path to ini file to parse. (Required)
 * @return Struct keyed by profile section, the values being comma-delimited lists of section entries 
 * @author Reinhard Jung (reinhard.jung@gmail.com) 
 * @version 1, July 27, 2012 
 */
function getProfileSectionsUTF8(iniPath) {
    var iniFile            = "";
    var line            = "";
    var profileSections = structNew();
    var thisSection        = "";
    try {
        iniFile = fileOpen(iniPath, "read", "UTF-8");
        line    = "";
        
        while (!fileIsEOF(iniFile)) {
            line = FileReadLine(iniFile);
            findSection = reFind("^\s*\[([^\]]+)\]", line, 1, true);    // eg: [sectionName]
            if (arrayLen(findSection.pos) gt 1){    // we're in a section
                thisSection = mid(line, findSection.pos[2], findSection.len[2]);
                profileSections[thisSection] = "";
                continue;
            }
            if (listLen(line, "=")){    // ie: not empty
                profileSections[thisSection] = listAppend(profileSections[thisSection], listFirst(line, "="));
            }            
        }
    }
    finally {
        if (iniFile != ""){    // assuming it's not its default value, it's safe to assume it's a file handle
            fileClose(iniFile);
        }
    }
    return profileSections;
}
Search CFLib.org
Latest Additions
									
									Raymond Camden added 
									QueryDeleteRows 
									November 04, 2017
								
								
									
									Leigh added 
									nullPad 
									May 11, 2016
								
								
									
									Raymond Camden added 
									stripHTML 
									May 10, 2016
								
								
									
									Kevin Cotton added 
									date2ExcelDate 
									May 05, 2016
								
								
									
									Raymond Camden added 
									CapFirst 
									April 25, 2016