Fix encoding of accented characters (#21049)

Signed-off-by: Michael Lobstein <michael.lobstein@gmail.com>
This commit is contained in:
mlobstein
2026-06-26 10:52:26 +02:00
committed by GitHub
parent 7f1a26401b
commit 907f56e5f1
2 changed files with 8 additions and 27 deletions
+6 -25
View File
@@ -348,8 +348,6 @@ sitemap nuvo label="Audio Control" {
### `nuvo.rules` Example
```java
import java.text.Normalizer
// To be used with a direct serial port or serial over IP connection
val actions = getActions("nuvo","nuvo:amplifier:myamp")
@@ -399,34 +397,22 @@ rule "Load track name for Source 3"
when
Item Item_Containing_TrackName changed
then
// The Nuvo keypad cannot display extended ASCII characters (accent, umlaut, etc.)
// Below we transform extended ASCII chars into their basic counterparts
// example: 'La Touché' becomes 'La Touche' and 'Nöel' becomes 'Noel'
var trackName = Normalizer::normalize(Item_Containing_TrackName.state.toString, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "")
sendCommand(nuvo_s3_display_line4, trackName)
sendCommand(nuvo_s3_display_line4, Item_Containing_TrackName.state.toString)
sendCommand(nuvo_s3_display_line1, "")
end
rule "Load album name for Source 3"
when
Item Item_Containing_AlbumName changed
then
// fix extended ASCII chars
var albumName = Normalizer::normalize(Item_Containing_AlbumName.state.toString, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "")
sendCommand(nuvo_s3_display_line2, albumName)
sendCommand(nuvo_s3_display_line2, Item_Containing_AlbumName.state.toString)
end
rule "Load artist name for Source 3"
when
Item Item_Containing_ArtistName changed
then
// fix extended ASCII chars
var artistName = Normalizer::normalize(Item_Containing_ArtistName.state.toString, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "")
sendCommand(nuvo_s3_display_line3, artistName)
sendCommand(nuvo_s3_display_line3, Item_Containing_ArtistName.state.toString)
end
// In this rule we have three items: Item_Containing_PlayMode, Item_Containing_TrackLength & Item_Containing_TrackPosition
@@ -548,8 +534,6 @@ The list of favorite names should be playable via another Thing connected to ope
#### `nuvo-advanced.rules.rules` Example
```java
import java.text.Normalizer
// all examples using Source 6
var source = "S6"
@@ -648,8 +632,7 @@ when
Item music_Music_Album received update
then
if (music_Music_Album.state.toString() != "") {
albumName = Normalizer::normalize(music_Music_Album.state.toString, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "")
sendCommand(nuvo_system_sendcmd, source + "DISPLINES0,0,0,\"\",\"" + albumName + "\",\"" + artistName + "\",\"" + trackName + "\"")
sendCommand(nuvo_system_sendcmd, source + "DISPLINES0,0,0,\"\",\"" + music_Music_Album.state.toString + "\",\"" + artistName + "\",\"" + trackName + "\"")
}
end
@@ -658,8 +641,7 @@ when
Item music_Music_Artist received update
then
if (music_Music_Artist.state.toString() != "") {
artistName = Normalizer::normalize(music_Music_Artist.state.toString, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "")
sendCommand(nuvo_system_sendcmd, source + "DISPLINES0,0,0,\"\",\"" + albumName + "\",\"" + artistName + "\",\"" + trackName + "\"")
sendCommand(nuvo_system_sendcmd, source + "DISPLINES0,0,0,\"\",\"" + music_Music_Artist.state.toString + "\",\"" + artistName + "\",\"" + trackName + "\"")
}
end
@@ -668,8 +650,7 @@ when
Item music_Music_Track received update
then
if (music_Music_Track.state.toString() != "") {
trackName = Normalizer::normalize(music_Music_Track.state.toString, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "")
sendCommand(nuvo_system_sendcmd, source + "DISPLINES0,0,0,\"\",\"" + albumName + "\",\"" + artistName + "\",\"" + trackName + "\"")
sendCommand(nuvo_system_sendcmd, source + "DISPLINES0,0,0,\"\",\"" + music_Music_Track.state.toString + "\",\"" + artistName + "\",\"" + trackName + "\"")
}
end
@@ -291,7 +291,7 @@ public abstract class NuvoConnector {
&& (command.endsWith(ON) || NuvoCommand.PAGE_ON.getValue().equals(command))) {
messageStr += messageStr;
}
dataOut.write(messageStr.getBytes(StandardCharsets.US_ASCII));
dataOut.write(messageStr.getBytes(StandardCharsets.UTF_8));
dataOut.flush();
} catch (IOException e) {
throw new NuvoException("Send command \"" + command + "\" failed: " + e.getMessage(), e);
@@ -322,7 +322,7 @@ public abstract class NuvoConnector {
* @param incomingMessage the received message
*/
public void handleIncomingMessage(byte[] incomingMessage) {
String message = new String(incomingMessage, StandardCharsets.US_ASCII).trim();
String message = new String(incomingMessage, StandardCharsets.UTF_8).trim();
logger.debug("handleIncomingMessage: {}", message);