TEXTSCANU Reads Unicode strings from a file and outputs a cell array of strings
-------------
INPUT
-------------
filename - string with the file's name and extension
- example: 'textscanu.m.txt'
encoding - encoding of the file
- default: UTF-16LE
- examples: UTF16-LE (little Endian), UTF8.
- See http://www.iana.org/assignments/character-sets
- MS Notepad saves in UTF-16LE ('Unicode'),
UTF-16BE ('Unicode big endian'), UTF-8 and ANSI.
del_sym - column delimitator symbol in ASCII numeric code
- default: 9 (tabulator)
eol_sym - end of line delimitator symbol in ASCII numeric code
- default: 13 (carriage return) [Note: line feed=10]
wb - displays a waitbar if wb = 'waitbar'
-------------
OUTPUT
-------------
C - cell array of strings
-------------
EXAMPLE
-------------
C = textscanu('textscanu.m.txt', 'UTF8', 9, 13, 'waitbar');
Reads the UTF8 encoded file 'textscanu.m.txt', which has
columns and lines delimited by tabulators, respectively
carriage returns. Shows a waitbar to make the progress
of the function's action visible.
-------------
NOTES
-------------
1. Matlab's textscan function doesn't seem to handle
properly multiscript Unicode files. Characters
outside the ASCII range are given the \u001a or
ASCII 26 value, which usually renders on the
screen as a box.
Additional information at "Loren on the Art of Matlab":
http://blogs.mathworks.com/loren/2006/09/20/
working-with-low-level-file-io-and-encodings/#comment-26764
2. Text editors such as Microsoft Notepad or Notepad++ use
a carriage return (CR, ascii 13) and a line feed (LF, ascii 10)
to mark line ends (when you hit the enter key for example),
instead of just carriage return as usual on Unix or
Microsoft Word.
In textscanu use ascii 13 as delimitator in the case of
end lines marked with the CR/LF combination. Since the LF
is beyond the end of a given line and not part of the next,
it is disregarded by the function.
-------------
BUG
-------------
When inspecting the output with the Array Editor,
in the Workspace or through the Command Window,
boxes might appear instead of Unicode characters.
Type C{1,1} at the prompt or in Array Editor click
on C then C{1,1}: you will see the correct string
if you have an a Unicode font for the appropriate
character ranges installed and enabled for the Command
Window and Array Editor (File > Preferences > Fonts).
However, up to Matlab R2010a at least, Unicode
characters display as boxes in figures, even if
data is correctly stored in Matlab as Unicode.
-------------
REQUIREMENTS
-------------
Matlab version: starting with R2006b
-------------
REVISIONS LOG
-------------
2010.12.31 - [new] no requirement anymore not to end the
file with end of line marks
- [fix] define default waitbar handle value
and make the message more informative
2010.10.04 - [fix] upgrade to Matlab version 2007a
2009.06.13 - [new] added option to display a waitbar
2008.02.27 - function creation
-------------
CREDITS
-------------
Vlad Atanasiu
atanasiu@alum.mit.edu | http://www.waqwaq.info/atanasiu/
|