On 1 Nov 2007, at 18:57, Jim Ault wrote:

On 11/1/07 11:01 AM, "Dave" <[EMAIL PROTECTED]> wrote:

This works ok with the addition of a line to check for embedded
apostrophes:

put replace(myText,"'","''") into myText

However I now have a another weird problem, I have a field that
represents a file path, in this case the path is:

/Users/Dave/Music/iTunes/iTunes Music/Blank &#38; Jones/Addicted To
Trance (Disc 1)/11 DJs, Fans And Freaks.mp3

However a "if there is a file" fails on this path. When I look I
can't see the &#38; in the file name. I'm guessing it's something to
do with UTF16 vs UTF8 or something, but I'm not sure how to resolve
it. The database I am writing is set to UTF8 which AFAIK is the only
option for SQLite.

Any ideas what how to overcome this problem?


Basically, you are including control characters in the data you are trying
to store, so Sql does not see those characters as *data*.

This has nothing to do with SQL, this is before the data is written, in fact I can insert the data ok. The problem is that some of the data has these weird characters. I am dealing with a "typical" MusicBase. From looking at the track that have these characters in then I'd say they came from a PC. I seem to remember somewhere now that said you have to do something to the data you wrote to ensure it will work on a Mac and PC. Does anyone remember??


You need to read the docs carefully to identify these characters and take
action
One method as given earlier in this thread is to escape them (tell the Sql
engine to use them as data, NOT control characters)

Another method as given earlier in this thread is to use Rev to replace these characters with non-control characters before sending the data to the
Sql engine

A third method is to encode the data (especially file paths, network
locations, and web urls). This is not the same as UTF8, which is merely a
superset of ASCII.

From Wikipedia: <quote>
UTF-8 is a superset of ASCII. Since a plain ASCII string is also a valid
UTF-8 string, no conversion needs to be done for existing ASCII text.
Software designed for traditional non-extended ASCII character sets can
generally be used with UTF-8 with few or no changes. <end quote>

In short, UTF8 encoding does not change normal ASCII characters and control characters will still appear as control characters to Sql. They need to be
changed or escaped.

<I am not an expert in this area, so there could be several corrections on
my post in the coming days (or minutes) >

Encoding can be done different ways and converts a data string into
alternate character symbols that allow decoding to get back the original string. Your example of (&#38;) is an html entity which makes sense to a web browser, but not Sql. The ampersand is a control character for Sql, and in this case, the Sql engine must be told to treat it as a data character
(or encoded to some other character)

Also remember that spaces in file names can be problematic, depending on the platform and how you are using them. You may have to make adjustments and
quote them appropriately for the complete path name to be understood.

Do a google search for "sql escape characters escaping encode decode" to find work done by others. One difficulty with quick easy answers is that
different databases and languages use different control characters.

You have landed squarely in the world of character conversion depending on
the environments you wish to use.  You need to create your own map and
methods to get from point A to B to C and back again.

If you are trying to do multi-lingual and unicode, things get a bit more
complicated.

I could be wrong on some of this, as I have not built an Sql database, but I have spent time working through string conversions with Rev, text file, file
paths, Html, Applescript, PHP, and Apache protocols.  Same game, just
different team colors.

Hope this helps

Jim Ault
Las Vegas


All the Best
Dave

_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to