From Unicode to IS08859_1 conversion

Hi everybody!
I'm trying simply to correctly display some special characters like �,�,�,�,�,�.
I can decode correctly any RFC2047 compliant string, but the output string is in Unicode(UTF8) format, since this is the Java's native charset.
Then I tried to convert the string to the ISO-8859-1 another charset in two ways:
1) string = new String(string.getBytes(),"ISO8859_1");
2) import sun.io.CharToByteConverter;
CharToByteConverter fromUnicode = CharToByteConverter.getConverter("ISO8859_1");
string = new String(fromUnicode.convertAll(string.toCharArray()));
Both of these gave me the same result.
Are they equivalent? (yes, I suppose).
Anyway, trying to convert to some charsets (like SJIS, Cp307) it works fine, but trying to convert to other charsets (ISO8859_1, Cp1202) it seems not to perform any conversion:
the result is the same I obtain deleting the code descripted above.
Can anyone give me help?
Thank you all.
Gi_gio.

1) string = new String(string.getBytes(),"ISO8859_1");This is likely to do nothing because here's what happens: It converts "string" to an array of bytes using the default encoding for your platform, which is most likely ISO8859-1. Then it converts that array of bytes back to a String, using ISO8859-1. So... no change.
Every time you think "I need a string in xxx format", slap yourself on the hand. A Java String is not in any format but Unicode. There is no such thing as a UTF-8 String or an ISO8859-1 String. If you need data in a particular encoding, you need an array of bytes in that encoding. In other words if you need your String in ISO8859-1 encoding, you do this:
bytes b[] = string.getBytes("ISO8859_1");

Similar Messages

  • Unicode to String Conversion

    Dear all,
    I'm trying to get the String from unicode, previously i'm converting the String to Unicode like below,
    String s = "\\u"+Integer.toHexString(s.charAt(0));
    Which is giving me the same what i appended above even after Conversion using UTF-8.
    If i do String s ="\u30f3"
    It is giving me correct character. But my problem is i'm getting the latter part i.e hexString latter in the run time...through Integer.toHexString..
    i can't add this as a character.. so it is taking as a two different strings..
    How to handle this situation..
    Hope i can find the answer,
    Thanks in advance,
    Srinivas N

    Below is my IOUtils class. In particular, see the loadTextFile method for an example of how to read a UTF file, and the isUTF method to detect if a file is Unicode
    You will not be able to compile this class unless you have my InfoFetcher class. You should be able to find a reference to this class by searching google for "InfoFetcher tjacobs01"
    You are welcome to use and modify this class, but please don't change the package or take credit for it as your own work
    package tjacobs.io;
    import java.awt.Component;
    import java.io.*;
    import java.net.URL;
    import java.net.URLConnection;
    import java.text.MessageFormat;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import javax.swing.JOptionPane;
    import javax.swing.JTable;
    import javax.swing.table.TableModel;
    import tjacobs.io.InfoFetcher.FetcherListener;
    * IOUtils class
    * This is an important class that I use a lot.<p>
    * has a lot of static utilities. Most should be fairly self-explanatory
    public class IOUtils {
         public static final int DEFAULT_BUFFER_SIZE = (int) Math.pow(2, 20); //1 MByte
         public static final int DEFAULT_WAIT_TIME = 30000;
         public static final boolean ALWAYS_BACKUP = false;
         public static String loadTextFile(File f) throws IOException {
              return loadTextFile(f, isUTF16(f));
         public static String loadTextFile(File f, boolean UTF16) throws IOException {
              BufferedReader br = !UTF16 ?
                        new BufferedReader(new FileReader(f)) :
                        new BufferedReader(
                             new InputStreamReader(new FileInputStream(f),
                                                   "UTF-16"));
              int length = (int) f.length();
              char data[] = new char[!UTF16?(int)length : ((int)length) / 2 - 1];
              int got = 0;
              do {
                   got += br.read(data, got, data.length - got);
              while (got < data.length);
              return new String(data);
         public static InfoFetcher loadData(InputStream in) {
              byte buf[] = new byte[DEFAULT_BUFFER_SIZE]; // 1 MByte
              return loadData(in, buf);
         public static InfoFetcher loadData(InputStream in, byte buf[]) {
              return loadData(in, buf, TimeOut.DEFAULT_WAIT_TIME);
         public static InfoFetcher loadData(InputStream in, byte buf[], int waitTime) {
              return new InfoFetcher(in, buf, waitTime);
         public static InfoFetcher loadData(InputStream in, int initBufLength, int waitTime) {
              return loadData(in, new byte[initBufLength], waitTime);
         public static InfoFetcher loadData(File f) throws FileNotFoundException{
              //if (!f.exists()) throw new FileNotFoundException(f.getAbsolutePath());
              //create the inputstream first so that we can generate the FileNotFoundException right away
              InputStream in = new BufferedInputStream(new FileInputStream(f));
              long len = f.length();
              if (len > Integer.MAX_VALUE) {
                   throw new RuntimeException("File size exceeds maximum size for a byte buffer");
              return loadData(in, (int) len, TimeOut.NO_TIMEOUT);
         public static InfoFetcher loadData(URL url) throws IOException{
              return loadData(url.openConnection());
         public static InfoFetcher loadData(URLConnection conn) throws IOException {
              int size = conn.getContentLength();
              if (size < 0) return loadData(conn.getInputStream(), 2000, DEFAULT_WAIT_TIME);
              return loadData(conn.getInputStream(), size, DEFAULT_WAIT_TIME);
          * Note: There is no guarentee that this method will
          * ever return. For instance, if you call loadAll on
          * an open socket connection it won't return until the
          * socket has closed
         public static String loadAllString(InputStream in) {
              InfoFetcher fetcher = loadData(in);
              fetcher.run();
              return new String(fetcher.buf, 0, fetcher.got);
          * Note: There is no guarentee that this method will
          * ever return. For instance, if you call loadAll on
          * an open socket connection it won't return until the
          * socket has closed
         public static byte[] loadAll(InputStream in) {
              InfoFetcher fetcher = loadData(in);
              return fetcher.readCompletely();
         public static void copyBufs(byte src[], byte target[]) {
              int length = Math.min(src.length, target.length);
              for (int i = 0; i < length; i++) {
                   target[i] = src;
         * Not threaded by default. If you need this to run
         * in a separate, create a new thread or runnable class
         * @param in
         * @param out
         public static void pipe (InputStream in, OutputStream out) {
              pipe (in, out, TimeOut.NO_TIMEOUT);
         * Not threaded by default. If you need this to run
         * in a separate, create a new thread or runnable class
         * @param in
         * @param out
         public static void pipe (InputStream in, final OutputStream out, int timeout) {
              pipe (in, out, timeout, false);
         private static class PipeFetcher implements FetcherListener {
              OutputStream out;
              InputStream in;
              public IOException ex;
              boolean closeWhenDone;
              public PipeFetcher (InputStream in, OutputStream out, boolean closeWhenDone) {
                   this.out = out;
                   this.closeWhenDone = closeWhenDone;
              public void fetchedMore(byte[] buf, int start, int end) {
                   try {
                        out.write(buf, start, end - start);
                   catch (IOException iox) {
                        ex = iox;
                        try {
                             in.close();
                             out.close();
                        catch (IOException iox2) {
                             iox2.printStackTrace();
              public void fetchedAll(byte[] buf) {
                   if (closeWhenDone) {
                        try {
                             out.close();
                        catch (IOException iox) {
                             iox.printStackTrace();
         * Not threaded by default. If you need this to run
         * in a separate, create a new thread or runnable class
         * @param in
         * @param out
         public static IOException pipe (final InputStream in, final OutputStream out, int timeout, final boolean closeWhenDone) {
              InfoFetcher info = new InfoFetcher (in, new byte[DEFAULT_BUFFER_SIZE], timeout);
              PipeFetcher pf = new PipeFetcher(in, out, closeWhenDone);
              info.addFetcherListener(pf);
              info.run();
              return pf.ex;
              info.addInputStreamListener(new InputStreamListener() {
                   public void gotMore(InputStreamEvent ev) {
                        try {
                             out.write(ev.getBytes(), ev.getStart(), ev.getBytesRetrieved() - ev.getStart());
                        catch (IOException iox) {
                             System.err.println ("Pipe closing");
                   public void gotAll(InputStreamEvent ev) {}
              Thread t= new Thread (info);
              t.start();
         public static byte[] expandBuf(byte array[]) {
              return expandBuf(array, array.length * 2);
         public static byte[] expandBuf(byte array[], int newlength) {
              byte newbuf[] = new byte[newlength];
              copyBufs(array, newbuf);
              return newbuf;
         public static byte[] trimBuf(byte[] array, int size) {
              byte[] newbuf = new byte[size];
              for (int i = 0; i < size; i++) {
                   newbuf[i] = array[i];
              return newbuf;
         * @see getFileOutputStream(File, boolean)
         public static OutputStream getFileOutputStream(File file) throws IOException {
              return getFileOutputStream(file, true);
         * Convienience method for opening a FileOutputStream w/wo a buffer
         * makes sure that the file directory exists so this should always succeed.
         public static OutputStream getFileOutputStream(File file, boolean buffered) throws IOException {
              if (!file.exists() && !file.isDirectory()) {
                   confirmDirectoryExists(file.getParentFile());
              if (file.exists()) {
                   if (ALWAYS_BACKUP) {
                        file.renameTo(new File(file.getAbsolutePath() + "~"));
                   } else {
                        file.delete();
              file.createNewFile();
              OutputStream out = new FileOutputStream(file);
              if (buffered) {
                   out = new BufferedOutputStream(out);
              return out;
         * Confirms that a directory exists and makes it if it doesn't
         public static void confirmDirectoryExists(File dir) {
              if (!dir.exists()) {
                   confirmDirectoryExists(dir.getParentFile());
                   dir.mkdir();
              if (!dir.isDirectory()) {
                   confirmDirectoryExists(dir.getParentFile());
         public static OutputStream getFileOutputStream(String name) throws IOException {
              return getFileOutputStream(name, true);
         public static PrintStream getFilePrintStream(String file) throws IOException {
              return new PrintStream(getFileOutputStream(file));
         public static PrintStream getFilePrintStream(File file) throws IOException {
              return new PrintStream(getFileOutputStream(file));
         public static OutputStream getFileOutputStream(String name, boolean buffered) throws IOException {
              return getFileOutputStream(new File(name), buffered);
         * @param f if f is a directory it returns the absolue path to f otherwise it returns the absolute path to the directory f is in
         public static String getDirectory(File f) {
              if (f.isDirectory()) {
                   return f.getAbsolutePath();
              else {
                   return f.getParentFile().getAbsolutePath();
         * Get the file without the extension.
         * @see getFileNoExtension(String);
         public static String getFilenameNoExtension(File f) {
              return getFilenameNoExtension(f.getName());
         * Gets the file name without the extension
         * returns the whole file name if no '.' is found<br>
         * otherwise returns whatever's before the last .
         public static String getFilenameNoExtension(String s) {
              int idx = s.indexOf('.');
              if (idx == -1) {
                   return s;
              else {
                   return s.substring(0, idx);
         * gets the file extension
         * if a '.' character is found it returns what's after the last .
         * if not, it returns the empty string
         public static String getFileExtension(String s) {
              int idx = s.lastIndexOf('.');
              if (idx == -1) {
                   return "";
              else {
                   return s.substring(idx + 1);
         * @see getFileExtension(String)
         public static String getFileExtension(File f) {
              return getFileExtension(f.getName());
         * Delete everything in a directory. Recursively deletes all sub-directories
         public static void deleteDirectory (File f, Component parent) {
              if (!f.isDirectory()) {
                   throw new RuntimeException("File " + f.getAbsolutePath() + " is not a directory!");
              int val = JOptionPane.showConfirmDialog(parent, "Confirm Delete " + f.getAbsolutePath(), "Confirm Delete " + f.getAbsolutePath(), JOptionPane.OK_CANCEL_OPTION);
              if (val == JOptionPane.OK_OPTION) {
                   deleteAllFiles(f);
         private static void deleteAllFiles (File f) {
              //recursively delete all its contents
              if (!f.isDirectory()) {
                   //throw new RuntimeException("File " + f.getAbsolutePath() + " is not a directory!");
                   f.delete();
              else {
                   File[] files = f.listFiles();
                   for (int i = 0; i < files.length; i++) {
                        if (files[i].equals(f) || files[i].equals(f.getParent())) {
                             continue;
                        deleteAllFiles(files[i]);
                   f.delete();
         * static utility method for copying a file to another location
         public static void copyFile (File src, File newParent) throws FileNotFoundException {
              if (!src.exists()) {
                   return;
              if (!newParent.exists()) {
                   newParent.mkdirs();
                   //throw new RuntimeException("Parent folder must exist");
              if (newParent.isDirectory()) {
                   File newFile = new File(newParent, src.getName());
                   if (src.isDirectory()) {
                        newFile.mkdir();
                        File children[] = src.listFiles();
                        for (int i = 0; i < children.length; i++) {
                             copyFile(children[i], newFile);
                   else {
                        //loadFile
                        InfoFetcher info = loadData(new FileInputStream(src));
                        final BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(newFile));
                        info.addInputStreamListener(new InputStreamListener() {
                             int lastbytes = 0;
                             public void gotMore(InputStreamEvent ev1) {
                                  try {
                                       out.write(ev1.getBytes(), lastbytes, ev1.getBytesRetrieved() - lastbytes);
                                       lastbytes = ev1.getBytesRetrieved();
                                  catch (IOException iox) {
                                       iox.printStackTrace();
                             public void gotAll(InputStreamEvent ev2) {
         * @deprecated use the Find class
         public static File find(Pattern p, File start) {
              return recursiveFind(start, null, p, true);
         * @deprecated use the Find class
         public static File find(Pattern p) {
              return find(p, new File("."));
         * @deprecated use the Find class
         private static File recursiveFind(File current, File cameFrom, Pattern p, boolean startDescending) {
              Matcher m = p.matcher(current.getName());
              if (m.matches()) {
                   return current;
              File[] files = current.listFiles();
              if (startDescending) {
                   File value = descend(current, cameFrom, p, startDescending);
                   if (value != null) return value;
                   return ascend(current, cameFrom, p, startDescending);
              else {
                   File value = ascend(current, cameFrom, p, startDescending);
                   if (value != null) return value;
                   return descend(current, cameFrom, p, startDescending);               
         * @deprecated use the Find class
         private static File ascend(File current, File cameFrom, Pattern p, boolean startDescending) {
              File par = current.getParentFile();
              if (par == null) {
                   return null;
              par = par.getAbsoluteFile();
              if (par.equals(cameFrom)) {
                   return null;
              return recursiveFind(par, current, p, false);
         * @deprecated use the Find class
         private static File descend(File current, File cameFrom, Pattern p, boolean startDescending) {
              File files[] = current.listFiles();
              if (files == null) {
                   return null;
              for (int i = 0; i < files.length; i++) {
                   File child = files[i];
                   if (child.equals(cameFrom)) {
                        continue;
                   File f = recursiveFind(child, current, p, true);
                   if (f != null) {
                        return f;
              return null;
         * Utility for saving a string to a file. Rather than have to set
         * up all the writers etc and trap exceptions, just returns a boolean
         * if it worked
         * <p>
         * @see saveData(File, byte[])
         public static boolean saveData(File f, String s) {
              return saveData(f, s.getBytes());
         * Utility for saving a string to a file. Rather than have to set
         * up all the writers etc and trap exceptions, just returns a boolean
         * if it worked
         public static boolean saveData(File f, byte[] data) {
              try {
                   OutputStream out = new BufferedOutputStream(new FileOutputStream(f));
                   out.write(data);
                   out.close();
              catch(IOException iox) {
                   iox.printStackTrace();
                   return false;
              return true;
         * Way to save a stream to a file. Not multithreaded.
         * Will block until the save is done
         * @param f
         * @param in
         * @return
         public static boolean saveData(File f, InputStream in) throws FileNotFoundException {
              return pipe(in, new FileOutputStream(f), TimeOut.NO_TIMEOUT, true) == null;
              //InfoFetcher fetcher = loadData(in);
    //          try {
    //               FileOutputStream out = new FileOutputStream(f);
    //               fetcher.addFetcherListener(new FetcherListener() {
    //                    public void fetchedMore(byte[] buf, int start, int end) {
    //                    public void fetchedAll(byte[] buf) {
    //          } catch (IOException iox) {
    //               iox.printStackTrace();
    //               return false;
    //          return true;
         * @deprecated use Find
         public static List<File> findAllFiles(Pattern p) {
              ArrayList<File> l = new ArrayList<File>();
              //File start = File.listRoots()[0];
              File start = new File("C:\\");
              return recursiveFindAll(start, null, p, true, l, 0);
              //l;
         * @deprecated use Find
         private static List recursiveFindAll(File current, File cameFrom, Pattern p, boolean startDescending, ArrayList<File> list, int level) {
              //System.out.println("" + level + " Scanning: " + current + "par: " + cameFrom);
              System.out.println("Scanning: " + current);
              Matcher m = p.matcher(current.getName());
              if (current.getName().equals("C:\\")) {
                   System.out.println("root");
                   try {
                        System.in.read();
                   catch (IOException iox) {}
              if (m.matches()) {
                   //return current;
                   list.add(current);
                   System.out.println("Adding " + current);
              File[] files = current.listFiles();
              if (startDescending) {
                   //File value = descend(current, cameFrom, p, startDescending);
                   descendAll(current, cameFrom, p, startDescending, list, level + 1);
                   //ascendAll(current, cameFrom, p, startDescending, list, level + 1);
                   //if (value != null) return value;
                   //return ascend(current, cameFrom, p, startDescending);
              else {
                   //ascendAll(current, cameFrom, p, startDescending, list, level + 1);
                   descendAll(current, cameFrom, p, startDescending, list, level + 1);
                   //File value = ascend(current, cameFrom, p, startDescending);
                   //if (value != null) return value;
                   //return descend(current, cameFrom, p, startDescending);               
              return list;
         * @deprecated use Find
         private static List ascendAll(File current, File cameFrom, Pattern p, boolean startDescending, ArrayList<File> list, int level) {
              File par = current.getParentFile();
              if (par == null) {
                   return list;
              par = par.getAbsoluteFile();
              if (par.equals(cameFrom)) {
                   return list;
              recursiveFindAll(par, current, p, false, list, level);
              return list;
         * @deprecated use Find
         private static File descendAll(File current, File cameFrom, Pattern p, boolean startDescending, ArrayList<File> list, int level) {
              File files[] = current.listFiles();
              if (files == null) {
                   return null;
              for (int i = 0; i < files.length; i++) {
                   File child = files[i];
                   if (child.equals(cameFrom)) {
                        continue;
                   recursiveFindAll(child, current, p, true, list, level);
              return null;
         public File getUniqueName(File f) {
              return getUniqueName (f, new MessageFormat("~{0,number,integer}"));
         public String getNameWOExtension(File f, boolean useAbsolute) {
              int idx = f.getName().indexOf(".");
              return (idx == -1) ? (useAbsolute ? f.getAbsolutePath() : f.getName()) : (useAbsolute ? f.getAbsolutePath() : f.getName()).substring(0, (useAbsolute ? f.getAbsolutePath().lastIndexOf(".") : f.getName().lastIndexOf(".")));
         public String getFileType (File f, boolean includeDot) {
              int idx = f.getName().lastIndexOf(".");
              return idx == -1 ? "" : f.getName().substring(idx + (includeDot ? 0 : 1));
         public File getUniqueName(File f, MessageFormat format) {
              String base = getNameWOExtension(f, true);
              String extension = getFileType(f, true);
              int count = 0;
              while (f.exists()) {
                   count++;
                   f = new File (base + format.format(new Object[] {Integer.valueOf(count)}) + extension);
              return f;
         public static boolean isUTF16 (File f) throws IOException {
              FileInputStream in = null;
              try {
                   if (!f.exists() || f.length() < 2) return false;
                   in = new FileInputStream(f);
                   byte b = (byte)in.read();
                   if (!(b == -1)) return false;
                   b = (byte) in.read();
                   return b == -2;
              finally {
                   if (in != null) in.close();
         public static boolean isUTF16(PushbackInputStream in) {
              boolean got1 = false, got2 = false;
              byte b = 0, b2 = 0;
              try {
                   b = (byte)in.read();
                   got1 = true;
                   if (!(b == -1 || b== -2)) {
                        return false;
                   b2 = (byte) in.read();
                   got2 = true;
                   return b == -1 ? b2 == -2 : b2 == -1;
              catch (IOException iox) {
                   iox.printStackTrace();
              finally {
                   try {
                        if (got1) {
                             in.unread(b);
                        if (got2) {
                             in.unread(b2);
                   } catch (IOException iox) {
                        iox.printStackTrace();
              return false;
         public void saveJTableToCSV(JTable table, File f) throws IOException {
              if (table == null || f == null) return;
              TableModel model = table.getModel();
              if (model == null) return;
              int rows = model.getRowCount();
              int columns = model.getColumnCount();
              PrintWriter pw = new PrintWriter(new FileWriter(f));
              for (int i = 0; i < rows; i++) {
                   for (int j = 0; j < columns; j++) {
                        Object o = model.getValueAt(i, j);
                        pw.print(o.toString());
                        if (j != columns - 1) {
                             pw.print(",");
                   pw.println();
         public static String getPathRelativeTo(File path, File relativeTo) {
              return getPathRelativeTo(path.getAbsolutePath(), relativeTo.getAbsolutePath());
         public static String getPathRelativeTo(String path, String relativeTo) {
              if (!path.startsWith(relativeTo)) return null;
              path = path.substring(relativeTo.length());
              if (path.startsWith(File.separator)) path = path.substring(File.separator.length());
              return path;

  • Vietnamese Language Support Services Menu Convert Encoding from Unicode-VNI

    I am running :
    Macbook 13 unibody
    Clean install Snow Leopard
    I have Vietnamese input method in Languages and Input Method Systems Preferences on
    Problem :
    When I was running Leopard, I somehow was able to see in the Services Menu "convert from unicode to vni," and other encodings, and vice versa while working in TextEdit, MS Word, and other applications that supported it.
    After doing a new and clean install on my machine. I am no longer able to see these options in the Services Menu, nor am I able to even find where and how to enable this in Systems Preferences.
    Please HELP HELP HELP it was an absolute life saver for me to work with all the different encodings and input methods for Vietnamese language.

    omg that was it. I had already installed the app from that link but it didn't show up in services because I guess I didn't log out properly for the installation to finish putting the service items on. & since I wasn't able to find the services after installation I assumed it must have been a part of the Leopard. Because you suggested, I installed again, and logged out as I was supposed to, and voila, the Vietnamese encoding conversion items for Services Menu. thanks you.

  • Unicode and ascii conversion help needed

    I am trying to read passwords from a foxpro .dbf. The encrpytion of the password is crude, it takes the ascii value of each char entered and adds an integer value to it, then stores the complete password to the table. So to decode, just subtract same integer value from each chars retieved from .dbf. pretty simple.
    The problem is that java chars and strings are unicode, so when my java applet retrieves these ascii values from the .dbf they are treated as unicode chars, if the ascii value is over 127 I have problems.
    The question. how can i retrieve these ascii values as ascii values in java?
    Should I use an InputStream like:
    InputStream is=rs.getAsciiStream("password");
    Is there a way to convert from unicode to extended ascii?
    Some examples would be helpful, Thanks in advance.

    version 1
    import java.nio.charset.Charset;
    import java.nio.ByteBuffer;
    import java.nio.CharBuffer;
    class Test {
        static char[] asciiToChar(byte[] b) {
            Charset cs = Charset.forName("ASCII");
            ByteBuffer bbuf = ByteBuffer.wrap(b);
            CharBuffer cbuf = cs.decode(bbuf);
            return cbuf.array();
        static byte[] charToAscii(char[] c) {
            Charset cs = Charset.forName("ASCII");
            CharBuffer cbuf = CharBuffer.wrap(c);
            ByteBuffer bbuf = cs.encode(cbuf);
            return bbuf.array();
    }version 2
    import java.io.*;
    import java.nio.charset.Charset;
    class Test {
        static char[] asciiToChar(byte[] b) throws IOException {
            Charset cs = Charset.forName("ASCII");
            ByteArrayInputStream bis = new ByteArrayInputStream(b);
            InputStreamReader isr = new InputStreamReader(bis, cs);
            char[] c = new char[b.length];
            isr.read(c, 0, c.length);
            return c;
        static byte[] charToAscii(char[] c) throws IOException {
            Charset cs = Charset.forName("ASCII");
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            OutputStreamWriter osw = new OutputStreamWriter(bos, cs);
            osw.write(c, 0, c.length);
            osw.flush();
            byte[] b = bos.toByteArray();
            return b;
    }

  • Pdf pack will not create a pdf from a tiff file    conversion failure    Why

    pdf pack will not create a pdf from a tiff file    conversion failure    Why

    Hi David Turner,
    What is the exact error message which you are facing while converting the file from .tiff  format to PDF format.
    As per my knowledge, PDF Pack supports conversion from .tiff format to PDF Format -Different File formats that Adobe PDF Pack supports.
    Regards,
    Rahul Tyagi

  • Problems with sending IDOC via RFC from Unicode to NonUnic

    Hello
    I have following problem, sending an IDOC via RFC from Unicode to Non Unicode System. IDoc is not sent with error: codepage of receiver system cant determined. receiver destination was: Message no. B1999
    I have tried different options in sm59, but it didnt help.
    Any ideas? The recipient system is rather old, version 4.0

    hey,
    I had a similar experience. I was interfacing between 4.6 (RFC), PI and ECC 6.0 (ABAP Proxy). When data was passed from ECC to 4.6, RFC received them incorrectly. So i had to send trimmed strings from ECC and receive them as strings in RFC (esp for CURR and QUAN fields). Also the receiver communication channel in PI (between PI and  RFC) had to be set as Non unicode. This helped a bit. But still I am getting 2 issues, truncation of values and some additional digits !! But the above changes resolved unwanted characters problem like "<" and "#". You can find a related post in my id. Hope this info helps..

  • URGENT: building Unicode ASO application from Unicode BSO application?

    Hello Experts,
    Is there other options available for building Unicode ASO application from Unicode BSO application?
    As per readme documentation of version 11.1.1.3.00,
    http://download.oracle.com/docs/cd/E12825_01/epm.111/esb_1111300_readme.pdf
    Block storage non-Unicode outlines can be converted to aggregate storage non-Unicode outlines; however, block storage Unicode outlines cannot be converted to aggregate storage Unicode outlines. [8208584]
    Can anyone suggest how to extract the Unicode Block Storage Outline and build as Unicode Aggregate Storage Outline? Thanks in advance.
    Regards,
    Sudhir

    Hi,
    You could use the [Outline Extractor|http://www.appliedolap.com/free-tools/outline-extractor] or ODI to extract the metadata from an outline and then use it to load into another database.
    Or use the same methods you built the metadata in the original BSO database.
    Cheers
    John
    http://john-goodwin.blogspot.com/

  • Character conversion problems when calling FM via RFC from Unicode ECC 6.0?

    Hi all,
    I faced a Cyrillic character convertion problem while calling an RFC function from R/3 ECC 6.0 (initialized as Unicode system - c.p. 4103). My target system is R/3 4.6C with default c.p. 1500.
    The parameter I used in my FM interface in target system is of type CHAR10 (single-byte, obviously).
    I have defined rfc-connection (SM59) as an ABAP connection and further client/logon language/user/password are supplied.
    The problem I faced is, that Cyrillic symbols are transferred as '#' in the target system ('#' is set as default symbol in RFC-destination definition in case character convertion error is met).
    Checking convertions between c.p. 4103  and target c.p. 1500 in my source system using tools of transaction i18n shows no errors - means conversion passed O.K. It seems default character conversion executed by source system whithin the scope of RFC-destination definition is doing something wrong.
    Further, I played with MDMP & Unicode settings whithin the RFC-destination definition with no successful result - perhaps due to lack of documentation for how to set and manage these parameters.
    The question is: have someone any experience with any conversion between Unicode and non-Unicide systems via RFC-call (non-English target obligatory !!!), or can anyone share valuable information regarding this issue - what should be managed in the RFC-destination in order to get character conversion working? Is it acceptable to use any character parameter in the target function module interface at all?
    Many thanks in advance.
    Regards,
    Ivaylo Mutafchiev
    Senior SAP ABAP Consultant

    hey,
    I had a similar experience. I was interfacing between 4.6 (RFC), PI and ECC 6.0 (ABAP Proxy). When data was passed from ECC to 4.6, RFC received them incorrectly. So i had to send trimmed strings from ECC and receive them as strings in RFC (esp for CURR and QUAN fields). Also the receiver communication channel in PI (between PI and  RFC) had to be set as Non unicode. This helped a bit. But still I am getting 2 issues, truncation of values and some additional digits !! But the above changes resolved unwanted characters problem like "<" and "#". You can find a related post in my id. Hope this info helps..

  • Language Conversion from Unicode 8 to Character Set

    Hi,
    I am creating a file programmatically containing Vendor Master data (FTP interface).
    The vendor name and vendor address is maintained in the local language (Taiwanese) in SAP System, these characters are in Unicode 8 character set.
    The Unicode character set should be converted to BIG5 for Taiwanese, and then send this information in the file.
    How can I perform this conversion and change the character set of the values I'm retrieving from table (LFA1) to character set BIG5.
    Is is possible to does this conversion in SAP, does sap allows this?
    /Mike

    Hi Manik,
      I am also having a similar requirement, as I need to convert the unicode chinese character to GB2312 encoded chinese character,. I already posted in forums but didnt get the required the solution.
    Can you please provide the solution which you implemented and also confirm whether it can be used  to solve  the above problem.
    Hoping for your good reply.
    Regards,
    Prakash

  • Character conversion from Unicode to WE8ISO8859P1

    Hi,
    I am having a text field in which i need to enter Unicode characters also. When entering the Unicode character '€' in the text field and when clicked on the "Save" button it is throwing the error "java.sql.SQLException: Cannot map Unicode to Oracle character". The oracle database characterset is of type "WE8ISO8859P1". Do i need to do the conversion of Unicode character to WE8ISO8859P1 in the Controller explicitly?If so, Please mention the method through which i can achieve the same.Or is there any profile options or setup changes through which i can avoid this error?Can anyone please suggest how to proceed with this?
    Thanks,
    Sreeja

    Pl identify your database characterset
    SQL> select * from NLS_DATABASE_PARAMETERS;If the NLS_CHARACTERSET is WE8ISO8859P1, it is not capable of storing the Euro symbol (pl do a google search to find various references).
    To store the Euro symbol, you will most likely need to change the database characterset to UTF8 - pl see the MOS Docs mentioned in this thread for details - Adding Greek & German language to R12
    HTH
    Srini

  • Conversion from Unicode to Font

    Greetings everyone,
    Does anyone have any idea how I can convert a Devnagari Unicode (UTF-8) document into a normal ASCII text (with devanagari fonts) document to edit with word and use with non-unicode software?
    Thanks a lot in advance,
    Vibhu
    Message was edited by: bullet350

    It has been awhile since I was trying to find a page layout program that supported Devanagari. About six months ago I found iCalumus. It didn't support editing or input, but if you had a text file you could paste it in place.
    I contacted the developer and he said they would be adding input/editing support. I just downloaded the latest version and it seems that they have done so!
    I haven't done any extensive testing to see if all the conjuncts work properly. Quick testing seems to suggest it is a bit buggy, but fairly good – at least on screen. I haven't tried printing anything at all.

  • Extraction of Unicode data from Unicode R/3 to NON Unicode BW

    Hello experts!
    We want to extract data from a unicode source system into a non-unicode BW. Now we got problems with japanese signs (kanji). Our plan was to check against RSKC and delete the the unicode texts this way. This is OK for our people as a workaround.
    But we even doesn't get our data in the PSA. Getting here some conversion errors.
    Is there a way to handle this. The only solution we now at the moment is to delete possible problematic values over extractor customer exit. But if there would be a BW-side solution it would be better.
    Switching the BW to Unicode is no topic at the moment.
    Best regards,
    Peter

    Hello Siggi!
    Thank you for this hint. I had seen this document before but being not sure how this can help. I will look on this tomorrow again and talk to our sap basis.
    My perfomance issue is still open. I tried different things but nothing shows a real change for the better. So I opened now a sap message. Let's see what it will bring.
    Oh, we produce no monitor entries by the way.
    What is a little bit crazy is that in SM50 it is always read on DIM6 while we have a DIM7 which has about 40 percent compared to the now 15 percent of DIM6. Very bad design but also depends on the kind of data in this case.
    Best regards,
    Peter

  • Unicode huge file conversion problem

    I use the command in Unix "<b>sapiconv -f 4110 -t 8600 -o <source file name> <destination file name></b>" calling by ABAP command  "CALL 'SYSTEM' ID 'COMMAND'  "   to convert non-unicode source file to unicode destination file in code page 8600 (Thai language). For the small size source file, It has no problem, but for the huge size source file (27MB - the file was extracted and created by OPEN DATASET from asset master data about 95000 records), it has problem.  There are only about 1300 Records (about 200k) in destination file and <b>the remain records are missing!?!?</b> And every time I run the program, It still has certain result.
    What can I do for this case? or the command 'sapiconv' has the size limitation for unicode file conversion? or which additional parameter should I use?
    Thank you in advance.
    David

    Hello,
    You  can use this function module
    CALL FUNCTION 'ARCHIVOBJECT_GET_CLIENT'
              EXPORTING
                ARCHIV_DOC_ID               =   V_ARCDOCID
                ARCHIV_ID                        =   V_ARCHIVID
                PATH                                 =   V_PATH
    *            DOC_TYPE                       =   'TXT '
    *         IMPORTING
    *            REPATH                           =
    *            COUNT                             =
    *            FILE_NAMES                    =
             EXCEPTIONS
               ERROR_ARCHIV                = 1
               ERROR_COMMUNICATIONTABLE       = 2
               ERROR_KERNEL                = 3
               ERROR_HTTP                     = 4
               OTHERS                             = 5.       
    I think it will help to you,
    Anil.

  • 46C EBCDIC to UNICODE upgrade and conversion

    Can the UNICODE conversion processed be used directly on a 46C EBCDIC source system? Or is a conversion to 46C ASCII required before a UNICODE conversion?

    Hello Will,
    as Sally already explained, this is unfortunately not possible ;-((
    SAP does not support Unicode with 4.6C ;-(
    Therefore, only EBCDIC and ASCII are the options.
    As of 4.7 Unicode & ASCII are available.
    => the project could look as follows:
    - On 4.6 you need to go from EBCDIC to ASCII - 12 - 24h conversion time
    - Upgrade to ERP 6.0 EHP4 ASCII - total Runtime about 40-65h - downtime of that: 10-24h
    - Unicode Conversion Latin1 - 6-14h conversion time
    => You see, that the total runtime in one step is pretty long - e.g. for X-mas ...
    Otherwise, it is typical, that the ASCII CPC is done in one step and later on Upgrade & Unicode in one further step.
    For more details, we should talk together, but at least your project is pretty big ...
    Regards
    Volker Gueldenpfennig, consolut international ag
    http://www.consolut.net - http://www.4soi.de - http://www.easymarketplace.de

  • Why do my messages immediately disappear from my verizon messages conversation on my galaxy note 10.1 2014 edition?

    I recently bought a Galaxy Note 10.1 2014 edition and downloaded Verizon Messages. All of my conversations synced with my laptop and phone, but whenever I send a message from my tablet it immediately disappears from the conversation on all of my devices. The people on the receiving end still get the message, but I do not see it. Please help.

        Hi Nickbon!
    I'm sorry to learn of any issues viewing messages sent from your tablet using Verizon Messages. When did this issue begin? Were messages from your tablet ever appearing for you? Please share some details for me, thanks!
    ChristinaB_VZW
    Follow us on Twitter @VZWSupport

Maybe you are looking for

  • ITunes not detecting iPod Touch 4G on Windows PC

    When I connect my iPod to my PC. Windows detects my iPod but iTunes does not. I have tried uninstalling iTunes and the Drivers but it did not work. Please help me out. Thanks

  • Printing Low-Res in InDesign

    hi there! I'm trying to print a file directly from InDesign with lo-res settings. I'd like to use it for quick review (content only) so that images do not need to be high quality. I remember in QuarkXPress you could reduce the lpi when printing and t

  • Updating pattern swatch just got harder compared to CS5

    In CC (17.1) I find when I Option-drag artwork over an existing pattern swatch, the "hotspot" of the cursor has changed. Why? Instead of the hand being the hotspot, it's a little "+" sign to the right. It feels awkward and makes the update process le

  • Delivery Related Billing rather than Order Related Billing in Return Sales

    Hi There is a requirement from the client that the Returns Invoice (RE) generated must be related to LR Delivery Type rather than Return Sales Order Type(RE). I have maintained the Copy Control from LR (Returns Delivery Type) to RE(Returns Invoice Ty

  • Error Notifications in SOA Mediator

    I have read the following documentation about error handling in mediator projects. http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/med_faulthandling.htm What was not obvious to me was how I could receive emails on notification of