[Building Sakai] truncating to fit field

Charles Hedrick hedrick at rutgers.edu
Fri Feb 28 05:21:35 PST 2014


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"
> 



More information about the sakai-dev mailing list