Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 07:18

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Unicode String Problem

Discussion on Unicode String Problem within the C/C++ forum part of the Coders Den category.

Closed Thread
 
Old   #1
 
elite*gold: 0
Join Date: Aug 2008
Posts: 465
Received Thanks: 224
Unicode String Problem

Hallo, ich schreibe momentan an einem RSS-Reader, der die Feeds filtert und auf einem SQL-Server speichert.
Später will ich die dann über ein Webinterface durchsuchen können. In Autoit hätte ich das ganze wahrscheinlich
in kürzester Zeit programmiert, aber ich will das ganze später auf meinem Raspberry Pi (ARM-Prozessor, Linux)
laufen lassen, deshalb musste ich C++ nehmen. Den Netzwerkteil () und den Regexteil (BOOST) habe ich schon erledigt.
Bei dem ersten Test habe ich bemerkt, das Zeichen außerhalb des ASCII-Bereiches (0x20 - 0x7e) nicht richtig dargestellt werden.
Meine erste Vermutung war, dass es an der Konsole liegen muss, das z. B. Ä, Ö, Ü nicht richtig ausgegeben werden
(das Problem hatte ich vor ein paar Jahren schon einmal).
Also habe ich mir einfach mal den String in die Zwischenablage kopieren lassen mit
Code:
bool setClipBoardString(string source) {
	if(OpenClipboard(NULL)) {
		HGLOBAL clipbuffer;
		char * buffer;
		EmptyClipboard();
		clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.size()+1);
		buffer = (char*)GlobalLock(clipbuffer);
		strcpy(buffer, LPCSTR(source.c_str()));
		GlobalUnlock(clipbuffer);
		SetClipboardData(CF_TEXT,clipbuffer);
		CloseClipboard();
		return true;
	}
	return false;
}
Resultat: selbes Problem!

Das habe ich schon alles ausprobiert:
  • Clipboard statt Konsole
  • Unicode einstellen als Zeichensatz in den Projekteinstellungen
  • wcout statt cout
  • neues leeres Projekt anlegen und Code weiter unten ausprobieren
  • main.cpp in Unicode speichern
Code:
#include <iostream>
#include <string>

using namespace std;

void main() {
	wstring test;
	cout << "ÄÖÜäöü" << endl;
	wcout << "ÄÖÜäöü" << endl;
	wcin >> test;
}
Verwendete IDE: Visual Studio 2013
Verwendetes Platformtoolset: Visual Studio 2012 ()

Ich hoffe, es gibt eine einfache Lösung, bei der es dann später auch keine Probleme mit GCC gibt.
MrCrackR is offline  
Old 12/09/2014, 00:43   #2
 
elite*gold: 0
Join Date: Aug 2008
Posts: 465
Received Thanks: 224
Ok ich habe gerade bemerkt, dass folgender Code in einem neuen Projekt funktioniert (String im Clipboard):
Code:
#include <Windows.h>
#include <iostream>
#include <string>

using namespace std;

string test = "ÄÖÜäöü";

bool setClipBoardString(string source) {
	if (OpenClipboard(NULL)) {
		HGLOBAL clipbuffer;
		char * buffer;
		EmptyClipboard();
		clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.size() + 1);
		buffer = (char*)GlobalLock(clipbuffer);
		strcpy(buffer, LPCSTR(source.c_str()));
		GlobalUnlock(clipbuffer);
		SetClipboardData(CF_TEXT, clipbuffer);
		CloseClipboard();
		return true;
	}
	return false;
}

void main() {
	cout << test << endl;
	setClipBoardString(test);
	cin >> test;
}
Die Ausgabe in die Konsole funktioniert zwar immer noch nicht richtig, aber das war ja auch nicht mein Ziel. Ich wollte ja nur den String von der Netzwerkfunktion fehlerfrei an die Regex- und schließlich an die SQL-Funktion weitergeben.
Da habe ich wohl irgendwo in den Projekteinstellungen Schindluder getrieben.
Ich fange mit dem Projekt an besten noch einmal von vorne an.

Thread kann geschlossen werden
MrCrackR is offline  
Old 12/09/2014, 01:18   #3

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,479
Received Thanks: 3,318
#closed (on request)
snow is offline  
Thanks
1 User
Closed Thread

Tags
ascii, c++, regex, rss, unicode


Similar Threads Similar Threads
[VB.net] "escaped unicode" String dekodieren [bsp. "Dave\u0099"]
12/12/2013 - .NET Languages - 4 Replies
Hey, ich habe ein Problem beim dekodieren von einem "escaped unicode" String. Warum in "" gesetzt? weil ich mir nicht sicher bin, ob der String auch wirklich "escaped unicode" heißt. Als Beispiel könnt ihr "Dave\u0099" nehmen, wo Dave™ herauskommen muss. Ein kleiner Ansatz würde mir schon weiterhelfen :) LG, Dave
[Visual Basic] [Problem] String auslesen/String zufällig wählen
05/06/2012 - General Coding - 4 Replies
Code: #include <GUIConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Name Generator", 236, 299, 815, 246) $Input1 = GUICtrlCreateInput("Username", 24, 72, 185, 21) $Input2 = GUICtrlCreateInput("Username", 24, 104, 185, 21) $Input3 = GUICtrlCreateInput("Username", 24, 136, 185, 21) $Input4 = GUICtrlCreateInput("Username", 24, 168, 185, 21) $Input5 = GUICtrlCreateInput("Username", 24, 200, 185, 21)
STRING PROBLEM!
04/22/2012 - C/C++ - 20 Replies
:cool: Hi community, i have a problem whit the string in c++ ! Example: string data("1234567890"); to keep the number 1 and delete numer 2? Result: 13579



All times are GMT +1. The time now is 07:18.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.