diff --git a/reading_machine/include/Action.hpp b/reading_machine/include/Action.hpp
index f2435e6b51e8397a2066b0f574e9768ef2209cc1..012af6186ce45c8cd9186857cf0d6ba882bdb732 100644
--- a/reading_machine/include/Action.hpp
+++ b/reading_machine/include/Action.hpp
@@ -62,7 +62,7 @@ class Action
   static Action attach(Object governorObject, int governorIndex, Object dependentObject, int dependentIndex);
   static Action addCurCharToCurWord();
   static Action ignoreCurrentCharacter();
-  static Action consumeCharacterIndex(std::string consumed);
+  static Action consumeCharacterIndex(util::utf8string consumed);
   static Action setMultiwordIds(int multiwordSize);
 };
 
diff --git a/reading_machine/src/Action.cpp b/reading_machine/src/Action.cpp
index 47c5d2042967260b00bb848596ee551c66d1fa1d..e4257402ae0d59d6b07d6950740502565ed6d6e8 100644
--- a/reading_machine/src/Action.cpp
+++ b/reading_machine/src/Action.cpp
@@ -72,7 +72,7 @@ Action Action::setMultiwordIds(int multiwordSize)
   return {Type::Write, apply, undo, appliable};
 }
 
-Action Action::consumeCharacterIndex(std::string consumed)
+Action Action::consumeCharacterIndex(util::utf8string consumed)
 {
   auto apply = [consumed](Config & config, Action &)
   {
diff --git a/reading_machine/src/Transition.cpp b/reading_machine/src/Transition.cpp
index a8d3b33e2d16036db5aabe969b4a560777582773..0a9bb8974fb6462f257beba5c3bb7b1d05d47c90 100644
--- a/reading_machine/src/Transition.cpp
+++ b/reading_machine/src/Transition.cpp
@@ -190,7 +190,7 @@ void Transition::initAddCharToWord()
 
 void Transition::initSplitWord(std::vector<std::string> words)
 {
-  auto & consumedWord = words[0];
+  auto consumedWord = util::splitAsUtf8(words[0]);
   sequence.emplace_back(Action::assertIsEmpty(Config::idColName));
   sequence.emplace_back(Action::assertIsEmpty("FORM"));
   sequence.emplace_back(Action::addLinesIfNeeded(words.size()));