Comments (3)
I was wondering the same thing and setting the locale as suggested in ncurses(3X)
is all that is required to get it to work on my machine.
The library uses the locale which the calling program has initialized. That is normally done with setlocale:
setlocale(LC_ALL, "");
If the locale is not initialized, the library assumes that characters are printable as in ISO-8859-1, to work with certain legacy programs. You should initialize the locale and not rely on specific details of the library when the locale has not been setup.
Here is a modified version of examples/getstr/getstr.go that works with non ASCII characters:
// goncurses - ncurses library for Go.
// Copyright 2011 Rob Thornton. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
/* This example demonstrates reading a string from input, rather than a
* single character */
package main
import (
gc "github.com/rthornton128/goncurses"
"log"
"github.com/famz/SetLocale"
)
func main() {
SetLocale.SetLocale(SetLocale.LC_ALL, "")
stdscr, err := gc.Init()
if err != nil {
log.Fatal("init:", err)
}
defer gc.End()
msg := "Enter a string: "
row, col := stdscr.MaxYX()
row, col = (row/2)-1, (col-len(msg))/2
stdscr.MovePrint(row, col, msg)
/* GetString will only retrieve the specified number of characters. Any
attempts by the user to enter more characters will elicit an audible
beep */
var str string
str, err = stdscr.GetString(10)
if err != nil {
stdscr.MovePrint(row+1, col, "GetString Error:", err)
} else {
stdscr.MovePrintf(row+1, col, "You entered: %s", str)
}
stdscr.Refresh()
stdscr.GetChar()
}
Output:
Enter a string: aábdðeé
You entered: aábdðeé
from goncurses.
@nbedos Thanks for this. I think I tried setting up locale, but in C portion of embedded code, I guess I did it wrong.... Can not check your solution right now, that piece of code was done with other library at the end, but it sure helps others, thanks for sharing!
from goncurses.
Closing because it looks like the proposed solution is the correct one.
from goncurses.
Related Issues (20)
- Thread safety HOT 2
- Build fails with "invalid flag in pkg-config" HOT 6
- Update wiki about KEY_RESIZE HOT 1
- go build issue HOT 1
- Compilation error when using REQ_LEFT
- pkgconfig problem HOT 8
- invalid flag in pkg-config HOT 1
- Convert project to Go mods
- Resizing without reinitializing?
- UTF-8 support is wrong HOT 4
- LINES and COLS? HOT 2
- About window scrolling HOT 2
- Examples fail to build: int is not MenuDriverReq
- Go get with M1 mac fails HOT 6
- Changing colors within MenuItems HOT 1
- Build fail: `lvalue required as left operand of assignment` HOT 5
- multi language support HOT 2
- Can't run audio with goncursers HOT 2
- Can't run Audio with Goncursers
- invalid-preprocessing-directive #elseif
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from goncurses.