Problem with revExecuteSQL - More
Dave
dave at looktowindward.com
Thu Nov 1 15:12:49 EDT 2007
On 1 Nov 2007, at 18:57, Jim Ault wrote:
> On 11/1/07 11:01 AM, "Dave" <dave at looktowindward.com> 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 & 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 & 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 (&) 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
More information about the use-livecode
mailing list