ASF Bugzilla – Attachment 4850 Details for
Bug 17039
[PATCH] HSSFHeader and HSSFFooter doesnot support DBCS
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
PATCH for this probrem.
patch.txt (text/plain), 6.92 KB, created by
Toshiaki Kamoshida
on 2003-02-13 04:06:35 UTC
(
hide
)
Description:
PATCH for this probrem.
Filename:
MIME Type:
Creator:
Toshiaki Kamoshida
Created:
2003-02-13 04:06:35 UTC
Size:
6.92 KB
patch
obsolete
>cvs diff HeaderRecord.java (in directory C:\apache-cvs\jakarta-poi\src\java\org\apache\poi\hssf\record\) >Index: HeaderRecord.java >=================================================================== >RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/HeaderRecord.java,v >retrieving revision 1.8 >diff -r1.8 HeaderRecord.java >76c76,77 >< private String field_2_header; >--- >> private byte field_2_unicode_flag; >> private String field_3_header; >122,123c123,133 >< field_2_header = new String(data, 3 + offset, // [Shawn] Changed 1 to 3 for offset of string >< LittleEndian.ubyteToInt(field_1_header_len)); >--- >> field_2_unicode_flag = data[ 2 + offset ]; >> if(isMultibyte()) >> { >> field_3_header = StringUtil.getFromUnicodeHigh( >> data,3 + offset,LittleEndian.ubyteToInt(field_1_header_len)); >> } >> else >> { >> field_3_header = new String(data, 3 + offset, // [Shawn] Changed 1 to 3 for offset of string >> LittleEndian.ubyteToInt( field_1_header_len) ); >> } >127a138,163 >> * see the unicode flag >> * >> * @return boolean flag >> * true:footer string has at least one multibyte character >> */ >> public boolean isMultibyte() { >> return ((field_2_unicode_flag & 0xFF) == 1); >> } >> >> /** >> * check the parameter has multibyte character >> * >> * @param value string to check >> * @return boolean result >> * true:string has at least one multibyte character >> */ >> private static boolean hasMultibyte(String value){ >> if( value == null )return false; >> for(int i = 0 ; i < value.length() ; i++ ){ >> char c = value.charAt(i); >> if(c > 0xFF )return true; >> } >> return false; >> } >> >> /** >148c184,186 >< field_2_header = header; >--- >> field_3_header = header; >> field_2_unicode_flag = >> (byte) (hasMultibyte(field_3_header) ? 1 : 0); >172c210 >< return field_2_header; >--- >> return field_3_header; >195a234,235 >> short bytelen = (short)(isMultibyte() ? >> getHeaderLength()*2 : getHeaderLength() ); >198c238 >< ( short ) ((len - 4) + getHeaderLength())); >--- >> ( short ) ((len - 4) + bytelen)); >203c243,251 >< StringUtil.putCompressedUnicode(getHeader(), data, 7 + offset); // [Shawn] Place the string in the correct offset >--- >> data[ 6 + offset ] = field_2_unicode_flag; >> if(isMultibyte()) >> { >> StringUtil.putUncompressedUnicode(getHeader(), data, 7 + offset); >> } >> else >> { >> StringUtil.putCompressedUnicode(getHeader(), data, 7 + offset); // [Shawn] Place the string in the correct offset >> } >216,217c264,265 >< retval += getHeaderLength(); >< return retval; >--- >> return (isMultibyte() ? >> (retval + getHeaderLength()*2) : (retval + getHeaderLength())); >228c276,277 >< rec.field_2_header = field_2_header; >--- >> rec.field_2_unicode_flag = field_2_unicode_flag; >> rec.field_3_header = field_3_header; > > >cvs diff FooterRecord.java (in directory C:\apache-cvs\jakarta-poi\src\java\org\apache\poi\hssf\record\) >Index: FooterRecord.java >=================================================================== >RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/FooterRecord.java,v >retrieving revision 1.8 >diff -r1.8 FooterRecord.java >76c76,77 >< private String field_2_footer; >--- >> private byte field_2_unicode_flag; >> private String field_3_footer; >122,123c123,133 >< field_2_footer = new String(data, 3 + offset, // [Shawn] Changed 1 to 3 for offset of string >< LittleEndian.ubyteToInt( field_1_footer_len) ); >--- >> field_2_unicode_flag = data[ 2 + offset ]; >> if(isMultibyte()) >> { >> field_3_footer = StringUtil.getFromUnicodeHigh( >> data,3 + offset,LittleEndian.ubyteToInt(field_1_footer_len)); >> } >> else >> { >> field_3_footer = new String(data, 3 + offset, // [Shawn] Changed 1 to 3 for offset of string >> LittleEndian.ubyteToInt( field_1_footer_len) ); >> } >127a138,163 >> * see the unicode flag >> * >> * @return boolean flag >> * true:footer string has at least one multibyte character >> */ >> public boolean isMultibyte() { >> return ((field_2_unicode_flag & 0xFF) == 1); >> } >> >> /** >> * check the parameter has multibyte character >> * >> * @param value string to check >> * @return boolean result >> * true:string has at least one multibyte character >> */ >> private static boolean hasMultibyte(String value){ >> if( value == null )return false; >> for(int i = 0 ; i < value.length() ; i++ ){ >> char c = value.charAt(i); >> if(c > 0xFF )return true; >> } >> return false; >> } >> >> /** >148c184,186 >< field_2_footer = footer; >--- >> field_3_footer = footer; >> field_2_unicode_flag = >> (byte) (hasMultibyte(field_3_footer) ? 1 : 0); >172c210 >< return field_2_footer; >--- >> return field_3_footer; >195a234,235 >> short bytelen = (short)(isMultibyte() ? >> getFooterLength()*2 : getFooterLength() ); >198c238 >< ( short ) ((len - 4) + getFooterLength())); >--- >> ( short ) ((len - 4) + bytelen )); >202c242,250 >< StringUtil.putCompressedUnicode(getFooter(), data, 7 + offset); // [Shawn] Place the string in the correct offset >--- >> data[ 6 + offset ] = field_2_unicode_flag; >> if(isMultibyte()) >> { >> StringUtil.putUncompressedUnicode(getFooter(), data, 7 + offset); >> } >> else >> { >> StringUtil.putCompressedUnicode(getFooter(), data, 7 + offset); // [Shawn] Place the string in the correct offset >> } >215c263,264 >< return retval + getFooterLength(); >--- >> return (isMultibyte() ? >> (retval + getFooterLength()*2) : (retval + getFooterLength())); >226c275,276 >< rec.field_2_footer = field_2_footer; >--- >> rec.field_2_unicode_flag = field_2_unicode_flag; >> rec.field_3_footer = field_3_footer; >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 17039
:
4849
| 4850 |
4894
|
5785