I want to create simple language learning applications to help friends in learning languages. A simple Java console application would do the trick, but the Windows console does not seem to handle Unicode (and I need my software to work with all kinds of special letters at once).

Googling it, I get the idea there might be ways to actually make Unicode work in the Windows console, but it seems a bit overly complex, plus that it requires some effort from anyone running the program. I want to write programs that anyone without computer experience can run easily.

I wanted to try doing this in Python instead, as the IDLE console at least seemed to work with Unicode. But it has its own set of problems (I can't enter certain letters, like the é, without writing it elsewhere and pasting it in)

Now I'm considering building this as a web application or Swing application, to actually be able to make my program work with Unicode. But I feel I'm maybe overlooking something. Is there no easy way to make a Unicode console application that'd work on Windows?

  • 2
    On Linux it could be easier. Sep 6, 2014 at 13:49
  • 1
    why don't you ship your program with a batch script that configures the console for Unicode, and then launches your actual program?
    – amon
    Sep 6, 2014 at 13:51
  • 3
    This may not be what you want to hear but I'm going to suggest contributing to an established project rather than rolling your own. I'm saying this as someone who has developed such applications from scratch, someone who has contributed to established projects, and someone who has used such applications for improve language skills. As part of a team you benefit from the know-how that has already been accumulated and can concentrate on what is specific to your goal rather than reinvent the wheel.
    – Louis
    Sep 6, 2014 at 14:05
  • (1) Take a look at Anki. (2) On desktop, consider writing a local Web application. It's much easier on the client side, and not harder on the server side. Listen on localhost, auto-launch a browser, and you're done with Unicode issues, font issues, styling, controls, etc.
    – 9000
    Sep 10, 2014 at 2:27

1 Answer 1

  1. Dynamic Language Python is probably a better choice than Java for such an application, given its relative simplicity and less need for boilerplate code and operational middleware. I don't know about the IDLE console for Python 2, but IDLE for Python 3.4 handles Unicode characters well (I just tested it), as does Python 3 overall. Nicer IDEs such as Komodo and PyCharm (both of which have free versions) are great with Unicode characters. There are tutorials and explanations online (e.g. this one from Wikipedia) for various systems how to enter Unicode characters without copy-and-paste.

  2. Web Application Console apps are simple, but not particularly attractive by modern standards. Much of the world has also moved beyond desktop GUI applications, embracing Web apps. Web apps offer you easier distribution to a wider audience and easier construction for high-polish looks. You will end up needing HTML, CSS, and some JavaScript skills in building the front end to a Webapp, in addition to whatever your app backend is. I recommend that you look into jQuery and its user-interface extensions. It's not the only JavaScript approach to building UIs, but it's very common and widely supported. While this is more up-front investment, you will end up with a more valuable and forward-looking set of skills for yourself. If you decide on Python and a Webapp, I suggest you look into the Flask Web app framework.

  3. Dynamic Language, Part 2 Python isn't unique in its ability to build nice Webapps. PHP, Ruby, and JavaScript are other popular options. They all can handle Unicode well. If you decide to try building your entire app in JavaScript, I recommend you look at Meteor.

  • Wait, PHP can handle Unicode well? Since when? I don't believe PHP 6 is released yet. Feb 3, 2015 at 18:54
  • Unicode in Python 2 is painful. As you say, python 3 is decent enough at it. Feb 4, 2015 at 4:21
  • Unicode in Python 2 can be painful, but it isn't necessarily so. I admire the seamlessness of it in Python 3, but it's workable in 2 if you follow "decode early / everything in Unicode / encode late" rules. If you don't keep discipline on when you are working in encodings (UTF-8, ASCII, etc.) and when in real Unicode, that's when the real misery begins. Feb 4, 2015 at 16:20

This site is temporarily in read-only mode and not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .