[Building Sakai] truncating to fit field

Sam Ottenhoff ottenhoff at longsight.com
Fri Feb 28 06:43:05 PST 2014


We already have code in Sakai to check whether the database connection can
read/write proper UTF-8.  I would be fine with adding another check for
Oracle semantics, but it doesn't make much sense to me to rewrite all
insert string truncation code to deal with an Oracle db that isn't
multi-byte preferred.

On Fri, Feb 28, 2014 at 8:21 AM, Charles Hedrick <hedrick at rutgers.edu>
wrote:
>
> The Oracle web page recommends not using "char" in the declaration, but
instead setting NLS_LENGTH_SEMANTICS to char. However unless I have some
assurance that sakai sitss actually set NLS_LENGTH_SEMANTICS, I need to
assume the worst.
>
> On Feb 27, 2014, at 5:12 PM, Sam Ottenhoff <ottenhoff at longsight.com>
wrote:
>
> > Adding code to work around this seems wrong.  Isn't the issue that your
database was setup with a non-multibyte character set which means that the
length calculations Oracle is making are based on one byte = one character?
 Our confluence page (
https://confluence.sakaiproject.org/display/I18N/Common+UTF-8+Problems)
recommends "AL32UTF8".
> >
> > Can any of our Oracle-using institutions chime in here?  If the
database is setup initially with a multi-byte character set, are the tables
created correctly where the length of SAKAI_SITE_GROUP/TITLE is 99
multi-byte characters and not 99 bytes?
> >
> > --Sam
> >
> >
> >
> > On Thu, Feb 27, 2014 at 4:49 PM, Charles Hedrick <hedrick at rutgers.edu>
wrote:
> > my new code uses this: https://gist.github.com/lpar/1031951, except for
mysql, where a substring will do (because it interprets limits as
characters, not bytes).
> >
> > Yuck.
> >
> > This is LSNBLDR-352.
> >
> > On Feb 27, 2014, at 3:54 PM, Steve Swinsburg <steve.swinsburg at gmail.com>
wrote:
> >
> >> The field is declared wrong, if it's going to store utf8 but use
substrb or substrc to trim the string in bytes or utf8 chars.
> >>
> >> Cheers
> >> Steve
> >>
> >> sent from my mobile device
> >>
> >> On 28/02/2014 3:29 AM, "Charles Hedrick" <hedrick at rutgers.edu> wrote:
> >> I am generating a group name. The maximum length is 99 characters. In
mysql it appears that truncating to 99 characters is fine, because mysql
interprets field lengths in characters.
> >>
> >> However in Oracle, unless the declaration uses "char", it is
understood to be bytes. That means that UTF-8 characters can take more than
one space. Is there some standard method in Sakai to truncate a string to a
length that will fit into a given database field?
> >>
> >> Unfortunately, the SAKAI_SITE_GROUP is defined in oracle using field
names without "char" after them.
> >>
> >>
> >> _______________________________________________
> >> sakai-dev mailing list
> >> sakai-dev at collab.sakaiproject.org
> >> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
> >>
> >> TO UNSUBSCRIBE: send email to
sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of
"unsubscribe"
> >
> >
> > _______________________________________________
> > sakai-dev mailing list
> > sakai-dev at collab.sakaiproject.org
> > http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
> >
> > TO UNSUBSCRIBE: send email to
sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of
"unsubscribe"
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20140228/a30d6ab6/attachment.html 


More information about the sakai-dev mailing list