Android Ersetzen Sie "..." durch Auslassungszeichen


306

Seit AVD Tools 16 erhalte ich folgende Warnung:

Replace "..." with ellipsis character (..., …) ?

in meiner strings.xml

an dieser Linie

 <string name="searching">Searching...</string>

Wie ersetze ich ...? Ist es nur buchstäblich &#8230;?

Könnte jemand diese Kodierung erklären?


Als Hinweis habe ich festgestellt, dass einige von Android selbst übersetzte Zeichenfolgendateien… sich selbst anstelle der Unicode-Entität verwenden. Angesichts der Tatsache, dass Android-XML-Dateien normalerweise ohnehin in UTF-8 codiert sind, sehe ich keinen Grund, das Zeichen selbst nicht anstelle der potenziell esoterischen Unicode-Entität zu verwenden, zumal die meisten Textverarbeitungsprogramme heutzutage die automatische Korrektur von "..." bis "unterstützen. … "(Microsoft Word macht es standardmäßig, zuletzt habe ich es überprüft).
JAB

Sind es tatsächlich drei Punkte (ASCII 46 / 0x26)? Oder ASCII 133 (ein Zeichen)?
Peter Mortensen

1
Bei der Beantwortung einer anderen SO-Frage gibt es eine bessere Erklärung als "Ändern ... in den Unicode, weil es besser ist". stackoverflow.com/a/27984145/973919 Kurz gesagt, es verhindert, dass die drei Punkte in einem mehrzeiligen Text aufgeteilt werden (der nur 1 oder 2 Punkte zeigt), und in einigen Typografien sieht es schlecht aus, 3 Punkte zu sehen.
Xarlymg89

Antworten:


538

&#8230;ist der Unicode für " ... ", also ersetzen Sie ihn einfach. Es ist besser, es als ein Zeichen / Symbol als drei Punkte zu haben.


41
Warum ist es "besser"? Dies erschwert die Übergabe des Textes an Übersetzer. Können wir diese dumme Warnung irgendwie töten? Danke
Schweinefeaster

25
@ Swinefeaster gut zu wissen :) aber da sie zahlbar sind, sind sie auch lehrbar :)
WarrenFaith

25
@swinefeaster Es ist zum Teil "besser", weil es nicht kaputt geht ("..." könnte zB in der zweiten Periode herumlaufen), und theoretisch könnten Sprachen sie anders rendern (viele asiatische Sprachen stellen sie in die Mitte und sie sind es breiter (entspricht einer Zeichenbreite)). Non-Breaking ist überall nützlich. Ich weiß jedoch nicht, ob Android sie in anderen langs korrekt wiedergibt, und ich kenne auch keine UTF-Zeichen für diesen Zweck.
Groxx

12
"..." verursacht Probleme mit der Barrierefreiheit. Android Talkback liest "Laden ..." als "Laden 3 Periode"
Mohammad Shabaz Moosa

14
Es scheint, mein Kommentar war nicht klar. Wenn Sie "Laden ..." (3 Punkte) verwenden, sagt Talkback "Laden 3 Perioden". Verwenden von "Laden & # 8230;" (Auslassungspunkte) veranlasst Talkback, "Laden" zu sagen [Was gut ist ..] Wir sollten also immer Auslassungspunkte verwenden
Mohammad Shabaz Moosa

15

Um es kurz zu machen, setzen Sie es einfach ein &#x2026;...

Link zur Entitätsliste für XML-Zeichen

  • In der Unicode-HTML-Spalte finden Sie eine Zeile mit dem Namen hellip

5
Ich habe mich anfangs gefragt, warum Sie verwendet haben, &#x2026;als in der Eclipse-Warnung die Verwendung angegeben ist, &#8230;aber Ihr Link antwortet darauf. Das x bedeutet nämlich einen Hex-Wert und 8230 in Dezimalzahl ist 2026 in Hex.
k2col

Wo soll das & # x2026 an einem beliebigen Ort dafür abgelegt werden?
Tushar Pandey

@ TusharPandey- Wenn Ihr Code <string name = "search"> Searching ... </ string> lautet, sieht er ungefähr so ​​aus wie <string name = "search"> Searching & # x2026 </ string>
Jadeye

13

Wenn Sie Eclipse verwenden, können Sie immer Folgendes tun:

  • Klicken Sie mit der rechten Maustaste auf die Warnung
  • Wählen Sie "Quick Fix" (Verknüpfung ist standardmäßig Ctrl+ 1)
  • Wählen Sie "Durch vorgeschlagene Zeichen ersetzen"

Dies sollte Ihre drei Punkte durch das richtige Unicode-Zeichen für Auslassungspunkte ersetzen.

Nur eine Anmerkung: Die neueste Version von ADT (21.1) führt den Ersetzungsvorgang manchmal nicht richtig aus, aber frühere Versionen hatten kein Problem damit.

Das ist der Charakter:


Das hat bei mir funktioniert! Es ist jedoch nichts "Visuelles" passiert, außer dass die Warnung verschwunden ist und ich ADT 22.2.1 ausführe. Aber ich denke, so funktioniert es :)
ymerdrengene

Hat bei mir nicht funktioniert. Eclipse schlug mir vor (ich weiß nicht warum), das <resources> -Tag mit einem neuen <element> -Tag zu umgeben.
Leonardo Raele

Eclipse wird dies irgendwann tun, wenn Sie den richtigen Bereich nicht genau markieren. Ich finde mich dabei, zwei- oder dreimal hervorzuheben und zu versuchen, eine schnelle Lösung zu finden, bevor es tatsächlich den richtigen Vorschlag macht.
Michael Celey

10

Die Lösung für Ihr Problem lautet:

Go to Window -> Preferences -> Android -> Lint Error Checking

Und suchen Sie nach " Auslassungspunkten ". Ändern Sie die Warnstufe auf " Info " oder " Ignorieren ".


8
Diese Vorschläge sind sinnvoll. Sie einfach zu ignorieren ist nur eine Lösung, wenn Sie wirklich sicher sind, was Sie tun. In diesem Fall ist der Austausch sinnvoll, daher ist es nicht gut, die Warnung zu ignorieren.
Alexander Pacha

Vielen Dank! Genau das, wonach ich gesucht habe. Und hier können Sie alle möglichen verwandten Dinge erledigen (ich brauche keinen Computer, der mir sagt, wie man buchstabiert, großschreibt oder interpunktiert). Sehr hilfreich!
Scott Biggs

3
Dies ist keine gute Option, um die Warnungen zu ignorieren. Sie sollten die Warnungen korrigieren, um bessere Ergebnisse zu erzielen.
Deepak

1
@ScottBiggs um fair zu sein, wenn der Computer Ihnen sagt, dass Sie etwas falsch geschrieben, großgeschrieben oder interpunktiert haben, sollten Sie es beheben. Lints sind in dieser Hinsicht nützlich, ich rate davon ab, sie zu deaktivieren.
EpicPandaForce

3

Diese Antwort hängt indirekt mit dieser Frage zusammen:

In meinem Fall textView1.setTextView("done&#8230");zeigte sich ein Box / chinesischer Charakter. Später überprüfte ich, fileformat.infowas der Wert darstellt, und stellte fest, dass dies ein Han-Zeichen ist. Also, was tun? Ich suchte nach "fileformat.info Ellipse Zeichen" und dann wurde mir alles klar, als ich sah, dass seine Werte sind;

UTF-16 (hex) 0x2026 (2026)

UTF-16 (decimal) 8,230

Sie haben also mehrere Codierungen zur Verfügung, um ein Zeichen darzustellen (z. B. 10 in Dezimal wird als A in Hexa dargestellt). Daher ist es sehr wichtig zu wissen, wann Sie ein Unicode-Zeichen schreiben und wie die Empfangsfunktion es decodiert. Wenn es als Dezimalwert dekodiert, müssen Sie einen Dezimalwert angeben. Wenn es hexadezimal akzeptiert, müssen Sie hexadezimal angeben.

In meinem Fall akzeptiert die Funktion setTextView () einen dezimal codierten Wert, aber ich habe hexadezimale Werte angegeben, sodass ich ein falsches Zeichen erhalten habe.



0

Am besten ignoriere ich es nicht, wie von einigen vorgeschlagen, es scheint mir. Verwenden Sie Android Studio, um dies zu korrigieren (anstatt den Zeichencode tatsächlich einzugeben), und das Tool ersetzt die drei Punkte durch das dreipunktige Unicode- Zeichen . Wird für Übersetzer usw. nicht verwirrend sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.